Ширина Для Android TableLayout
У меня есть два столбца TableLayout как только ребенок прокрутки. Первый столбец содержит TextViews ("метки"), а второй столбец содержит EditText/Spinner/DateWidget и т. д. ("значения"). Несмотря на то, что я указал android:layout_width="fill_parent" для виджетов TableLayout, TableRow & all (в столбце "значения").
экран выглядит идеально, когда деятельность создается. Однако, когда в EditText вводится действительно длинное значение, столбец "values" выходит за рамки видимая область экрана.
Как мне справиться с этим?
спасибо
6 ответов
вы можете определить размеры столбцов с помощью веса. Таким образом, вы определите высоту макета таблицы для заполнения родителя, но для каждого столбца вы должны установить ширину в "0px" и вес в процентах, которые вы хотите, чтобы столбец охватывал. Поэтому, предполагая, что вы хотите, чтобы первый столбец составлял 30% от ширины экрана, вы установили его вес на "0.3", а второй столбец на "0.7".
попробуйте и посмотрите, работает ли это.
прагматический способ решить эту проблему-использовать stretchColumns
и shrinkColumns
атрибуты TableLayout
. Их значения должны быть основаны на 0 индексах столбцов.
например, если у вас есть макет таблицы с двумя столбцами и:
- вы хотели бы, чтобы второй столбец заполнялся пустым пространством (растягивается), поэтому
TableLayout
подходит для всего родительского вида на большом экране устройства - вы хотели бы, чтобы первый столбец был сжат (и его содержимое, возможно, обернуто / ellipsized) на маленьком экране устройства
вы бы определили свой TableLayout
as:
<TableLayout
android:id="@+id/my_table_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:stretchColumns="1"
android:shrinkColumns="0" >
</TableLayout>
<TableLayout
android:layout_height="fill_parent"
android:layout_width="fill_parent"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp">
<TableRow
android:layout_height="fill_parent"
android:layout_width="fill_parent">
<TextView
android:layout_width="wrap_content"
android:text="Name "
android:layout_height="fill_parent">
</TextView>
<EditText
android:layout_width="0dp"
android:layout_weight="1"
android:hint="name"
android:layout_height="wrap_content"
>
</EditText>
</TableRow>
</TableLayout>
этот код работал для меня, чтобы выровнять текстовое представление в первом столбце и отредактировать текстовое заполнение родителя.
попробуйте это, убедитесь, что android:singleLine="false"
и android:inputType="textMultiLine"
:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:stretchColumns="1">
<TableRow android:layout_height="wrap_content"
android:layout_width="fill_parent">
<TextView android:text="Label:" />
<EditText android:id="@+id/entry" android:inputType="textMultiLine"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:singleLine="false" />
</TableRow>
</TableLayout>
У меня была аналогичная проблема с EditText на Android 2.2. В моем случае помогло добавление свойства android: maxWidth= "0sp". Теперь поле EditText отображается так, как я хотел, поэтому оно по - прежнему имеет тот же размер, что и другие поля EditText, но, кроме того, оно не изменяется при вводе длинного текста.
вот мое определение EditText:
<EditText android:id="@+id/extra_edit"
android:padding="3dip"
android:inputType="textImeMultiLine"
android:maxWidth="0sp"
android:layout_width="fill_parent"
/>