Установите EditText в процентах от ширины родителей в LinearLayout - PullRequest
0 голосов
/ 09 января 2012

У меня есть класс LinearLayout, в котором у меня есть:

TexView | ImageView | EditText | ImageView.

У меня есть последний ImageView вплоть до правой стороны LinearLayout, в котором он заключен. EditText выполняется очень долго, а в некоторых случаяхвыталкивает последний ImageView из поля зрения (или кажется, что он выталкивает его из поля зрения).

Я хочу, чтобы EditText был установлен в процентах от общей ширины.Я пытался использовать вес с параметрами LinearLayout, но, похоже, это приводит к тому, что представление выходит из строя.Например, здесь это для EditText:

 LinearLayout.LayoutParams lpEt = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT,
                                                                             LinearLayout.LayoutParams.WRAP_CONTENT,
                                                                             .50f);

Все остальные представления следуют этому примеру, но имеют меньшие веса (.2, .2, .1), и все они в сумме составляют 1,0.Но строка LinearLayout никогда не размещается правильно.

Должен ли я узнать ширину родительского элемента (который является ListView), а затем установить ширину EditText явно на основе ширины родительского элемента или есть лучший способ

1 Ответ

1 голос
/ 09 января 2012

Я не уверен, какова ваша линейная ориентация, но я угадываю ее горизонтальную. если это так, попробуйте это.

LayoutParams textViewParams = new LayoutParams(LayoutParams.WRAP_CONTENT,
        LayoutParams.WRAP_CONTENT);
textView.setLayoutParams(textViewParams);
LinearLayout.LayoutParams editTextParams = new LinearLayout.LayoutParams(
        0,LayoutParams.WRAP_CONTENT,1f);
editText.setLayoutParams(editTextParams);
LayoutParams imageViewParams = new LayoutParams(LayoutParams.WRAP_CONTENT,
        LayoutParams.WRAP_CONTENT);
imageView.setLayoutParams(imageViewParams);

Это позволит редактировать текст, чтобы заполнить оставшееся пространство между просмотром текста и просмотром изображения. Если вам нужно что-то еще, просто немного измените код. При использовании весов установите для веса или роста значение 0, для которого вы устанавливаете вес.

...