UI контролирует ширину - PullRequest
       11

UI контролирует ширину

1 голос
/ 01 февраля 2012

У меня следующая иерархия пользовательского интерфейса

Представление прокрутки -> TableLayout -> Строки [каждая строка имеет TextView + EditText]

Проблема Внутри строки каждаяПредставление не должно превышать 50% ширины родительского элемента (TableRow).если для ввода создан EditText, произнесите имя пользователя с максимальным количеством символов N;тогда ширина EditText в идеале должна составлять ровно N символов, но не должна превышать 50% предела.

Я перепробовал много перестановок и комбинаций и до сих пор не мог понять это правильно.

Я должен сделать это программно в соответствии с требованиями проекта.

спасибо.

Ответы [ 3 ]

0 голосов
/ 01 февраля 2012

я видел ваш комментарий, чтобы спросить ответы. Я думаю, что вы можете установить ширину правки текста или текстового представления в качестве содержимого обтекания и установить свойство максимальной ширины этих элементов управления как 50% экрана. Тогда его ширина не будет превышать 50% от родительской ширины.

0 голосов
/ 03 апреля 2012

Мне пришлось отказаться от TableLayout, чтобы мои собственные макеты были эффективными.Параметры макета в TableRows кажутся неэффективными.LinearLayout выглядит более гибким.

Теперь у меня есть следующая иерархия макетов, и она работает.

Вид прокрутки -> LinearLayout вместо TableLayout -> [Отдельные поля, инкапсулированные в LinearLayout вместо TableRows]

0 голосов
/ 01 февраля 2012

Попробуйте использовать вес макета следующим образом:

<TableRow
    android:id="@+id/tableRow1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" >

    <TextView
        android:id="@+id/textview1"
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:layout_weight="1">
    </TextView>

    <EditText
        android:layout_width="0px"
        android:layout_height="wrap_content"
        android:layout_weight="1" >
    </EditText>

</TableRow>

Чтобы сделать это программно, попробуйте использовать LayoutParams, чтобы выполнить то же самое, как это:

 TableLayout table = (TableLayout) findViewById(R.id.TableLayout1);

 TableRow tr = new TableRow(this);
 TableLayout.LayoutParams trparams = new TableLayout.LayoutParams(TableLayout.LayoutParams.MATCH_PARENT, TableLayout.LayoutParams.WRAP_CONTENT);
 tr.setLayoutParams(trparams);

 textview1 = new TextView(this);
 edittext1 = new EditText(this);

 TableRow.LayoutParams fieldparams = new TableRow.LayoutParams(0, LinearLayout.LayoutParams.WRAP_CONTENT, 1.0f);
 tr.addView(textview1, fieldparams);
 tr.addView(edittext1, fieldparams);

 table.addView(tr);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...