2013-07-12 4 views
1
FrameLayout frameLayout = new FrameLayout(this); 
LinearLayout linearLayout1= new LinearLayout(this); 
LinearLayout linearLayout2= new LinearLayout(this); 

FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

params.gravity = Gravity.CENTER_VERTICAL; 

frameLayout.addView(linearLayout1, params); 

как добавить linearLayout2 под linearLayout1Как добавить LinearLayout под другой LinearLayout в FrameLayout программно?

+0

Что происходит, когда вы скомпилировать и запустить этот код? –

+0

Можете ли вы сделать рамочную компоновку Relativelayout и установить параметр layout_below нового линейного макета ниже первого линейного макета ala [здесь] (http://stackoverflow.com/a/3277302/418505) или вы можете разместить как linearlayouts в linearlayout, который ориентирован вертикально? – Selecsosi

+0

Если вам нужно сделать что-то подобное, вероятность того, что вы делаете что-то неправильно, высока, определенно может быть другой компонент, который лучше для этого, почему бы вам не объяснить, что вы пытаетесь сделать здесь, поэтому мы можем помочь. .. –

ответ

14

Основываясь на знании, которое работает ваш код.

Измените FrameLayout на вертикальную линейную компоновку, то есть он отображает его дочерние элементы ниже друг друга.

LinearLayout parentLayout = new LinearLayout(this); 
LinearLayout linearLayout1= new LinearLayout(this); 
LinearLayout linearLayout2= new LinearLayout(this); 

LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 

params.gravity = Gravity.CENTER_VERTICAL; 

parentLayout.setOrientation(VERTICAL); 
parentLayout.addView(linearLayout1, params); 
parentLayout.addView(linearLayout2, params); 
+1

Ошибка возникает в (VERTICAL) в методе setOrientation @Blundell –

+1

Я решил Это, вы должны написать LinearLayout.VERTICAL, спасибо –

1

FrameLayout Documentation утверждает, что:

... просмотры за детьми втягивается в стеке, с последним добавленным ребенком на вершине. Размер FrameLayout - это размер его самого большого ребенка (плюс прокладка) ...

Таким образом, вы не можете (по крайней мере легко) делать то, что хотите. Однако LinearLayout в корне будет делать это автоматически, поэтому я предлагаю рассмотреть возможность использования одного ...

Надеется, что это помогает ...

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