2013-08-30 4 views
0

я вижу, что почти каждый образец здесь сказать, что это способ установить layout_weight из кода:Каков правильный способ задания веса макета программно?

linearLayoutView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
                    LinearLayout.LayoutParams.WRAP_CONTENT, 
                    1f)); 

Однако, это не работает в моем случае. Только это, что работает в моем случае:

linearLayoutView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, 
                    0, 
                    1f)); 

, который соответствует коду XML

<LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     > 

Почему это происходит? Неправильно ли мое решение?

ответ

2

Как вы сказали

, который соответствует коде XML

вашего XML является правильным, и поэтому является вторым фрагментом кода у вас есть из-за layout_height. В этом случае LinearLayout должен иметь vertical orientation. Для правильной работы weight ваш layout_width должен быть 0dp и для LinearLayout с vertical orientation Ваш layout_height должен быть 0dp.

В первом фрагменте кода у вас есть

LinearLayout.LayoutParams.WRAP_CONTENT 

для вашего height, что неправильно. Он должен быть равен 0, как и во втором фрагменте кода.

Смежные вопросы