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 раз с добавлением черной линии между макетом контейнера. Обычно я должен получить маленький красный столбец на левом и большой черный столбец, но вот что я получаю с этим кодом:
Почему это делает с точностью до наоборот код?
Спасибо за помощь ребята.
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" (или это программный эквивалент).