Android weightsum не работает, как ожидалось
У меня есть один горизонтальный линейный макет с шириной = match_parent и весом=5. Если я вставлю 5 вертикальных линейных макетов с каждой шириной=0 и весом=1, все будет выглядеть так, как ожидалось, каждый макет получит одинаковую ширину. Если я добавлю только 2 вертикали с каждой шириной=0 и весом=1, они займут больше места, чем должны. Я ожидал, что они также займут 1/5 пространства.
Может быть, это правильное поведение, что они занимают больше места, и я понял концепцию веса / weightsum неправильный.
Спасибо за любую помощь!
Править: Я пытаюсь добавить некоторый код
LinearLayout linear=null;
LinearLayout.LayoutParams layoutParams= new
LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
linear=new LinearLayout(getApplicationContext());
linear.setOrientation(LinearLayout.HORIZONTAL);
linear.setLayoutParams(layoutParams);
linear.setPadding(15, 0, 15, 10);
linear.setWeightSum(Float.valueOf(modulo));
//modulo 5 in my example
LinearLayout linear2=new LinearLayout(getApplicationContext());
LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(0,
LinearLayout.LayoutParams.WRAP_CONTENT, 1f);
if(count%modulo!=modulo-1){
lp1.setMargins(0, 0, 15, 0);
} else {
lp1.setMargins(0, 0, 0, 0);
}
linear2.setLayoutParams(lp1);
linear2.setOrientation(LinearLayout.VERTICAL);
Я добавляю компоновку linear 2 в linear in a loop Почему вы можете нажать кнопку выполнить код: D
3 ответа:
Если логическое решение не работает, заполните остальное
<View android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="3"/> <!-- or whatever the rest is -->
Или
View space = new View(this); // NEVER CREATE VIEWS WITH APP CONTEXT! LinearLayout.LayoutParams spaceParams = new LinearLayout.LayoutParams(0, 0, 3f); linear.addView(space, spaceParams);
Примечание:
Space
виджет не работал в этом случае.
Попробуйте это
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:weightSum="5"> <View android:layout_width="0dp" android:layout_height="match_parent" android:background="@android:color/holo_green_light" android:layout_weight="1"/> <View android:layout_width="0dp" android:layout_height="match_parent" android:background="@android:color/holo_blue_bright" android:layout_weight="1"/> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:weightSum="5"> <View android:layout_width="0dp" android:layout_height="match_parent" android:background="Your bg" android:layout_weight="2.5"/> <View android:layout_width="0dp" android:layout_height="match_parent" android:background="Your bg" android:layout_weight="2.5"/> </LinearLayout>
Разделите вес поровну.