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;

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

любезно обновите, почему это не работает.

спасибо