2013-06-04 152 views
0

我有一些動態添加linearlayout的問題。它添加在屏幕的頂部,覆蓋其他線性佈局。Linearlayout覆蓋另一個線性佈局

這裏是XML,代碼和結果。

XML:

<TextView 
    android:id="@+id/top_km" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center_horizontal" 
    android:background="#888" 
    android:gravity="top" 
    android:textColor="#fff" 
    android:textSize="30dip" 
    android:layout_centerHorizontal="true"/> 

<RelativeLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@+id/top_km" 
     android:id="@id/textLayout"> 

</RelativeLayout> 

代碼:

myLayout = (RelativeLayout) page.findViewById(R.id.textLayout); 
LinearLayout linLayout = new LinearLayout(this); 
linLayout.setOrientation(LinearLayout.VERTICAL); 
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
myLayout.addView(linLayout); 
LinearLayout hozLayout = new LinearLayout(this); 
hozLayout.setOrientation(LinearLayout.HORIZONTAL); 
LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT); 
myLayout.addView(hozLayout); 

結果: enter link description here

感謝

回答

1

這是因爲你用RealativeLayout適當添加使用 1 RelativeLayout.LayoutParams爲ST的LayoutParams 2.在使用的LayoutParams下面

實例字段

RelativeLayout rl=new RelativeLayout(this); 
LinearLayout ll1=new LinearLayout(this); 
TextView tx1=new TextView(this); 
tx1.setText("Test1"); 
ll1.addView(tx1); 
rl.addView(ll1); 
LinearLayout ll2=new LinearLayout(this); 
TextView tx2=new TextView(this); 
tx2.setText("Test1"); 
ll2.addView(tx1); 
rl.addView(ll2); 
RelativeLayout.LayoutParams lp2=(LayoutParams) ll2.getLayoutParams(); 

然後用lp2.addRule

這裏有一些幫助:

參數 verb由RelativeLayout定義的動詞之一,例如ALIGN_WITH_PARENT_LEFT。 anchor另一個視圖的id用作錨點,或布爾值(表示爲TRUE)爲true或0表示爲false)。對於不涉及其他兄弟的動詞(例如,ALIGN_WITH_PARENT_BOTTOM),只需使用-1。

+0

我試圖做到這一點: RelativeLayout.LayoutParams PARAMS =新RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); params.addRule(RelativeLayout.ALIGN_BOTTOM,id_value_layout-1); hozLayout.setLayoutParams(params); 但情況是一樣的。 – Postnik

0

也許你更容易將它添加到android:visibility="GONE"的XML文件中,然後在代碼中顯示它(View.VISIBLE)或隱藏它(View.GONE)。

+0

沒有((我不知道LinearLayout的數量,可能是10或者可能是100. – Postnik

+0

那麼,爲什麼不使用ListView,那麼你的佈局作爲行,更容易編碼。無論如何,如果你還想要以編程方式完成(這是不鼓勵的,請參閱這裏http:// stackoverflow。com/questions/9827819/best-practices-layouts-on-android-programmatic-vs-xml),然後像Ken Wolf所說的那樣,將LinearLayout作爲一個容器 –

1

請勿使用RelativeLayout作爲持有人。改爲使用LinearLayout而不是orientation="vertical"

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_below="@+id/top_km" 
    android:orientation="vertical" 
    android:id="@id/textLayout" /> 

然後在代碼

myLayout = (LinearLayout) page.findViewById(R.id.textLayout);

其次

// rest of your code