0

Есть ли ярлык для создания LinearLayout, который дает равный вес всем своим детям?ярлык для равных весов для всех элементов в Android LinearLayout

Мне нужно динамически добавлять представления к линейному расположению, и я хочу дать равные веса всем им. Есть ли способ сделать это, а не программно добавить layoutparams всем детям, а затем программно установить weightSum макета как количество элементов внутри макета?

+1

Ум, просто назначьте «вес» '1' каждому ребенку (в LinearLayout.LayoutParams этого ребенка) и не устанавливайте' weightSum' в 'LinearLayout'. – CommonsWare

+1

ВесSum ** дополнительно **. Просто установите все веса на ** 1 **. Убедитесь, что взвешенный размер установлен на ** 0dp **. –

+1

ой, я этого не знал :) спасибо, ребята! я знал, что для такой общей задачи должен быть короткий путь, но он никогда не думал, что эта сумма является необязательной ... Пожалуйста, ответьте, чтобы я мог поддержать вас и закрыть вопрос – kundasaba

ответ

0

Хорошо, оказалось, что weightSum является ДОПОЛНИТЕЛЬНОЕ, что означает, что я мог бы просто установить вес всех элементов, чтобы быть 1 и никогда не нужно было касаться параметра weightSum. благодарит вас за помощь!

1

Для этого вы можете присвоить весу линейной компоновке и разделить ее на равные части, предоставив layout_weight всем вашим представлениям в линейном макете. Например:

<LinearLayout 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="horizontal" 
android:weightSum="3"> 
<View 
android:layout_width="0dp" 
android:layout_height="30dp" 
android:layout_weight="1" 
/> 
<View 
android:layout_width="0dp" 
android:layout_height="30dp" 
android:layout_weight="1" 
/> 
<View 
android:layout_width="0dp" 
android:layout_height="30dp" 
android:layout_weight="1" 
/> 
</LinearLayout> 
0

Вот код, вы можете попробовать:

LinearLayout ll = (LinearLayout)findViewById(R.id.linearlayout); 
int childcount = ll.getChildCount(); 
for (int i=0; i < childcount; i++){ 
    View v = ll.getChildAt(i); 
    LinearLayout.LayoutParams loparams = (LinearLayout.LayoutParams) v.getLayoutParams(); 

    // Set only target params: 
    loparams.height = 0; 
    loparams.weight = 1; 
    v.setLayoutParams(loparams); 
} 
Смежные вопросы