У меня есть родительский LinearLayout с MATCH_PARENT для ширины и высоты. Я пытаюсь выяснить настройку гравитации и layout_gravity с помощью java-кода.
LinearLayout l=new LinearLayout(this);
l.setGravity(Gravity.CENTER);
LinearLayout.LayoutParams ll=new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
l.setLayoutParams(ll);
l.setOrientation(LinearLayout.VERTICAL);
Теперь я добавляю к нему кнопку, используя следующий код:
LayoutParams llb=new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
llb.gravity=Gravity.RIGHT;
b.setLayoutParams(llb);
Теперь, если я добавлю эту кнопку в LinearLayout l и сделаю ее вид содержимого
l.addView(b);
setContentView(l);
все работает нормально. Кнопка отображается в центре и на правой стороне.
Но если я вставляю эту кнопку в LinearLayout, а затем добавляю LinearLayout во внешний макет, как показано ниже
LinearLayout l2=new LinearLayout(this);
l2.setOrientation(LinearLayout.HORIZONTAL);
LinearLayout.LayoutParams ll2=new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
l2.setLayoutParams(ll2);
l2.addView(b);
//добавьте это в основной макет. Кнопка имеет те же LayoutParams, что и выше.
l.addView(l2);
setContentView(l);
Кнопка всегда появляется слева, и этот
llb.gravity=Gravity.RIGHT;
похоже, не работает.
любезно обновите, почему это не работает.
спасибо