Как установить android: layout_weight и android: layout_width в коде? - PullRequest
8 голосов
/ 11 сентября 2011

Может кто-нибудь сказать мне, как установить атрибуты XML android: layout_weight and android: layout_width в коде для динамически создаваемых представлений?

Ссылка: Макет таблицы XML?Две строки одинаковой ширины, заполненные кнопками одинаковой ширины?

Ответы [ 3 ]

18 голосов
/ 11 сентября 2011

Использование ViewGroup.LayoutParams .

LayoutParams lp = new LayoutParams(LayoutParams.FILL_PARENT, 
                                   LayoutParams.WRAP_CONTENT);
myview.setLayoutParams(lp);

Вы также можете указать фиксированные размеры пикселей в конструкторе вместо констант.Но фиксированные пиксели - плохая идея для Android из-за разнообразия устройств.

Вы можете рассчитать пиксели по размеру dp, но это нормально:

float pixels = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 
                                         10, getResources.getDisplayMetrics());

(Здесь: преобразовать 10dp в значение в пикселях)

3 голосов
/ 11 сентября 2011

Попробуйте

setLayoutParams(new LayoutParams(width, height))

Документы для конструктора гласят:

ViewGroup.LayoutParams(int width, int height)

Создает новый набор параметров макета с указанными шириной и высотой.

1 голос
/ 01 ноября 2017

Установите параметры макета динамически создаваемого вида, как показано ниже:

LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(
                            LinearLayout.LayoutParams.MATCH_PARENT,
                            LinearLayout.LayoutParams.WRAP_CONTENT,
                            2f
                    );
myView.setLayoutParams(param) 

Здесь последний аргумент '2f' указывает вес макета для вида.Мы также можем использовать десятичные точки здесь.

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