Ширина кнопок в Android TableLayout
У меня есть TableLayout с кнопкой внизу. Моя проблема заключается в том, что кнопка растягивается, чтобы заполнить всю ширину столбца, хотя я не хочу, чтобы он был широким.
![alt text]()
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>
... кнопка становится выше, но ширина все равно растягивается, чтобы заполнить столбец.
Я бы хотел, чтобы кнопка была примерно в два раза меньше ее текущей ширины, в центре которой находился столбец. Спасибо заранее!
Ответы
Ответ 1
@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>
Ответ 2
Я уверен, что android:stretchColumns="*"
будет всегда заставлять кнопку растягиваться так. Рассматривали ли вы размещение кнопки вне TableLayout?
Из документации:
Дети TableLayout не могут указать атрибут layout_width. Ширина всегда MATCH_PARENT. Однако атрибут layout_height может быть определен дочерним элементом; значением по умолчанию является WRAP_CONTENT