2015-05-12 2 views
2

У меня есть один горизонтальный линейный макет с шириной = match_parent и weightsum = 5. Если я вставляю 5 вертикальных линейных макетов с каждой шириной = 0 и весом = 1, все выглядит так, как ожидалось, макеты каждой имеют одинаковую ширину. Если я добавляю только 2 вертикали с каждой шириной = 0 и весом = 1, они занимают больше места, чем должны. Я ожидал, что они также возьмут 1/5 пространства.Android weightsum работает не так, как ожидалось

Возможно, это правильное поведение, что они занимают больше места, и я понял понятие веса/веса.

Спасибо за помощь!

редактировать: Я пытаюсь добавить код

LinearLayout linear=null; 
 
      LinearLayout.LayoutParams layoutParams= new 
 
      \t \t LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
 
      \t \t LinearLayout.LayoutParams.WRAP_CONTENT); 
 

 
linear=new LinearLayout(getApplicationContext()); 
 
      \t \t linear.setOrientation(LinearLayout.HORIZONTAL); 
 
      \t \t linear.setLayoutParams(layoutParams); 
 
      \t \t linear.setPadding(15, 0, 15, 10); 
 
      \t \t linear.setWeightSum(Float.valueOf(modulo)); 
 
//modulo 5 in my example 
 

 

 
LinearLayout linear2=new LinearLayout(getApplicationContext()); 
 
LinearLayout.LayoutParams lp1 = new LinearLayout.LayoutParams(0, 
 
       \t \t 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);

Я добавить раскладку линейную 2 в линейную в цикле Почему вы можете нажать кнопку запуска код: D

+1

Оставьте свой код. –

+1

Не могли бы вы также опубликовать скриншот? –

+0

это невозможно с атрибутом веса макета. С весом макета, взгляды все равны и заполняют место. – Opiatefuchs

ответ

0

Если логическое решение не работает заполнить оставшиеся с

<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 виджет не работает в этом случае.

+0

Я заменил все Appcontexts этим. Космическая вещь тоже не работает, всегда один и тот же результат :( – mambo

+0

Hmm .. Сначала попробуйте высоту '1' (это второй параметр параметров макета), если это не работает, попробуйте' View' вместо 'Space', если это не работает, попробуйте оба вместе, если это не сработает ... В любом случае дайте мне знать. –

+0

Так что, если я использую View, кроме Space с весом 3, это работает. Мне не нравятся такие «обходные пути» «но, по крайней мере, это то, что я хочу. Большое вам спасибо за вашу помощь. Если вы отредактируете свой ответ, я буду отмечать его как правильное – mambo

1

Попробуйте это

<?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> 
+0

вот что я делаю, правильно? – mambo

+0

@mambo Да .... И может быть изменение по требованию. –

+0

Может ли весSum использоваться в высоту? – Si8

0
<?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> 

разделите вес одинаково.