LayoutParams гравитация не работает

У меня есть родительский 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;

не похоже на работу.

Просьба обновить, почему это не работает.

Спасибо

0 ответов

Другие вопросы по тегам