1

Пожалуйста, посмотрите на следующий код:LinearLayout setMargins программно не влияет

 LinearLayout ll1 = new LinearLayout(context); 
     ll1.setBackgroundColor(Color.BLUE); 
     ll1.setOrientation(LinearLayout.VERTICAL); 
     LinearLayout.LayoutParams ll1LayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 
     ll1LayoutParams.setMargins(100, 0, 100, 0); 
     ll1.setLayoutParams(ll1LayoutParams); 
     ... 
     // parentLayout is FrameLayout 
     parentLayout.addView(ll1, ll1LayoutParams); 

Почему это не работает?

+0

какой результат вы получаете? и чего вы ожидаете? –

+0

Никакой запас не добавляется, но я бы ожидал, что маржа равна 100. Любое значение не имеет эффекта 10 или 100 без эффекта – toom

+0

Попробуйте [this] (http://stackoverflow.com/questions/2481455/set-margins-in-a- linearlayout-программно). Этот ответ может помочь вам – Jas

ответ

2

Изменить

LinearLayout.LayoutParams ll1LayoutParams = new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 

в

FrameLayout.LayoutParams ll1LayoutParams = new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT); 

При назначении макета Params ребенка, вы должны назначить класс LayoutParams своего родителя, а не вид. Поскольку здесь ваш родительский вид является FrameLayout, вам нужно использовать FrameLayout.LayoutParams.

+0

Круто, спасибо огромное :) – toom

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