Android: установка параметра веса программным образом противоположна тому, что я хочу

У меня проблема с Android. Я устанавливаю параметр Weight в Java, но он делает именно то, что я хочу.

Вот код

LinearLayout container = new LinearLayout(context);
// some code ...
container.setWeightSum(1f);

View v1 = new View(context);
v1.setBackgroundColor(Color.parseColor("#ff0000"));
LinearLayout.LayoutParams p1 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
p1.weight=0.1f;

View v2 = new View(context);
v2.setBackgroundColor(Color.parseColor("#000000"));
LinearLayout.LayoutParams p2 = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT);
p2.weight=0.9f;

container.addView(v1,p1);
container.addView(v2,p2);

Я повторяю этот процесс 7 раз с добавлением черной линии между макетом контейнера. Обычно я должен получить маленький красный столбец на левом и большой черный столбец, но вот что я получаю с этим кодом:

https://stackru.com/images/5eaaba5a9170219a7041e55d800318d5c622cc74.png

Почему это делает с точностью до наоборот код?

Спасибо за помощь ребята.

2 ответа

Решение

При использовании веса ширина должна быть нулевой

попробуйте с шириной 0 для детей внутри контейнера.............

 LinearLayout.LayoutParams p1 = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);



LinearLayout.LayoutParams p2 = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.WRAP_CONTENT);

Вы устанавливаете обе ширины на "wrap_content"... при использовании весов вы должны установить уязвимую ориентацию на "0dp" (или это программный эквивалент).

Другие вопросы по тегам