2011-11-03 42 views
0

好吧我有一個線性的相對佈局內。直到現在,相對佈局是完美的,但現在出現了一個大問題。相對佈局簡單位置

相對佈局基於其他項目的位置。例如,按鈕2位於button1的底部,依此類推......並且如果按鈕1消失,則button2將獲取...「nuts」。

這就是我的問題,當一個按鈕消失時,4個按鈕中的一個會變得...起來。 我需要的是這樣的按鈕位置:

按鈕1和按鈕2在屏幕中間,3和4降低,但不是真的在底部。 我試圖修改它的相對佈局,但我失敗了...希望你能幫助我。 下面的代碼:

<?xml version="1.0" encoding="utf-8"?> 
    <RelativeLayout android:id="@+id/relativeLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" xmlns:android="http://schemas.android.com/apk/res/android"> 
     <TextView 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:id="@+id/textView2" 
     android:text="TextView" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true"> 
     </TextView> 
     <Button 
     android:textSize="20dp" 
     android:layout_height="wrap_content" 
     android:id="@+id/button3" 
     android:text="Button" 
     android:layout_width="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_marginBottom="27dp" 
     android:layout_alignParentBottom="true"> 
     </Button> 
     <TextView 
     android:layout_height="wrap_content" 
     android:id="@+id/textView1" 
     android:textAppearance="?android:attr/textAppearanceLarge" 
     android:layout_width="wrap_content" 
     android:text="TextView" 
     android:layout_above="@+id/button1" 
     android:layout_centerHorizontal="true" 
     android:layout_marginBottom="74dp"> 
     </TextView> 
     <Button 
     android:textSize="20dp" 
     android:layout_height="wrap_content" 
     android:id="@+id/button2" 
     android:text="Button" 
     android:layout_width="wrap_content" 
     android:layout_alignBaseline="@+id/button1" 
     android:layout_alignBottom="@+id/button1" 
     android:layout_alignParentRight="true"> 
     </Button> 
     <Button 
     android:textSize="20dp" 
     android:layout_height="wrap_content" 
     android:id="@+id/button1" 
     android:paddingRight="30dp" 
     android:paddingBottom="90px" 
     android:text="Button" 
     android:padding="10dp" 
     android:layout_width="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_alignRight="@+id/button3"> 
     </Button> 
     <Button 
     android:textSize="20dp" 
     android:layout_height="wrap_content" 
     android:gravity="bottom" 
     android:id="@+id/button4" 
     android:text="Button" 
     android:layout_width="wrap_content" 
     android:layout_alignBaseline="@+id/button3" 
     android:layout_alignBottom="@+id/button3" 
     android:layout_alignParentRight="true"> 
     </Button> 
    </RelativeLayout> 

這裏是我用來使按鈕隱形代碼:

 Button b1 = (Button) findViewById(R.id.button1); 
     Button b2 = (Button) findViewById(R.id.button2); 
     Button b3 = (Button) findViewById(R.id.button3); 
     Button b4 = (Button) findViewById(R.id.button4); 
     b1.setVisibility(View.GONE); 
+1

請儘快解決問題。這將是偉大的 –

+0

Somethimes,我必須讓按鈕不可見。當我這樣做時,其他按鈕之一隻是隨機更改它的位置,因爲在它的代碼中,按鈕應該位於按鈕底部隱身。 – user1015311

+0

+1同意@Frankenstein,使用View.INVISIBLE –

回答

3

之間的正確填充,如果你正在使用view.setVisibility(View.GONE) ..then嘗試View.INVISIBLE 這裏查看=(你的textview,按鈕任何東西)

1

嘗試使用,以提高您的佈局規則:

android:layout_toRightOf="component_id" 
    android:layout_toLeftOf="component_id" 
    android:layout_above="component_id" 
    android:layout_below="component_id" 

還是儘量把表格佈局中的按鈕...類似的東西

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" android:layout_width="fill_parent" 
android:layout_height="fill_parent" android:layout_gravity="center" 
android:padding="15dip"> 
<LinearLayout android:orientation="vertical" 
    android:layout_height="wrap_content" android:layout_width="fill_parent" 
    android:layout_gravity="center" android:paddingLeft="20dip" 
    android:paddingRight="20dip"> 
    <TableLayout android:layout_height="wrap_content" 
     android:layout_width="wrap_content" android:layout_gravity="center" 
     android:stretchColumns="*"> 
     <TableRow android:paddingBottom="250dip"> 
      <Button android:id="@+id/edt1" 
      android:layout_gravity="left" 
      android:text="Button1" 
      /> 

      <Button android:id="@+id/edt2" 
      android:layout_gravity="right" 
      android:text="Button2" 
      /> 
     </TableRow> 

     <TableRow> 
      <Button android:id="@+id/edt3" 
      android:layout_gravity="left" 
      android:text="Button3" 
      /> 
      <Button android:id="@+id/edt4" 
      android:layout_gravity="right" 
      android:text="Button4" 
      /> 
     </TableRow> 

    </TableLayout> 
</LinearLayout> 

我的意思是 - 這樣的按鈕在「細胞」分離的,雖然你會與表格的佈局PARAMS發揮,實現要素

+0

你不明白,那就是問題所在!如果我使用其中一個,並且component_id不可見,那麼按鈕只是隨機更改它的位置 – user1015311

+0

我得到您的問題,我指的是如果您有4個元素 - 上面的2(A和B) - 2 (C和D)。如果你告訴C低於A(並且不告訴它是D的左邊),那麼如果你刪除A,C可能會超過B!但是,如果你提高規則並告訴它低於A和D的左邊,C總是會超過A的位置。這就是我的意思是「提高你的規則」。 – hovanessyan