我有一个TableLayout,底部有一个按钮.我的问题是,即使我不想要那么宽,按钮也可以填充列的整个宽度.
XML如下所示:
<?xml version="1.0" encoding="utf-8"?> <TableLayout xmlns:android="http://schemas.android.com/apk/res/android" android:stretchColumns="*" android:layout_width="wrap_content" android:layout_height="wrap_content"> <TableRow android:layout_height="wrap_content" android:layout_width="fill_parent"> <CheckBox android:id="@+id/check1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Some text 1"/> <CheckBox android:id="@+id/check2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Some text 1"/> </TableRow> <TableRow android:layout_height="wrap_content" android:layout_width="fill_parent"> <CheckBox android:id="@+id/check3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Even some more text 2"/> <CheckBox android:id="@+id/check4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Even some more text 2"/> </TableRow> <TableRow android:layout_height="wrap_content" android:layout_width="fill_parent"> <CheckBox android:id="@+id/check5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="An even longer line of text 3"/> <CheckBox android:id="@+id/check6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Another longer line of text 3"/> </TableRow> <EditText android:id="@+id/myEditText1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textMultiLine" android:singleLine="false" android:text="Enter some text" /> <TableRow> <Button android:id="@+id/SaveButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Save"> </Button> </TableRow> </TableLayout>
即使我设置一个明确的宽度的按钮,它忽略它.例如,如果我有:
<Button android:id="@+id/SaveButton" android:layout_width="100sp" android:layout_height="100sp" android:text="Save"> </Button>
…按钮变得更高,但宽度仍然延伸以填充列.
我希望按钮大约是当前宽度的一半,以列为中心.提前致谢!!
解决方法
@mbaird是正确的:android:stretchColumns =“*”总是拉伸列的宽度.但是,您仍然可以通过将FrameLayout放入列的宽度列,然后将按钮放在列中,从而获得列中所需的行为.然后,您可以根据需要设置按钮的大小,并将其置于FrameLayout中:
<TableRow> <FrameLayout android:layout_height="wrap_content"> <Button android:id="@+id/SaveButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:paddingLeft="40dp" android:paddingRight="40dp" android:text="Save"> </Button> </FrameLayout> </TableRow>