2015-11-11 60 views
-1

這應該很簡單,但我真的被卡住了。 因此,這裏是我的佈局:兩個按鈕的寬度相等,但當父母的寬度伸展到一個寬度時 - - Android

__________________________ 
| layout     | 
|[Button A ] [ Button B ]| 
|________________________| 

然後當你讓按鈕Visibility.GONE我需要這樣的:

__________________________ 
| layout     | 
|[  Button B  ]| 
|________________________| 

或按鈕B Visibility.GONE:

__________________________ 
| layout     | 
|[  Button A  ]| 
|________________________| 

我有嘗試應有盡有。任何佈局都可以做,它不一定是相對或線性或任何東西。

在此先感謝。

+0

誰能降低這個請說明一下嗎?這是一個有效的問題 –

回答

3

所以,使用線性佈局將每個視圖的權重設置爲1,方向水平。不要設置weightSum
您可以設置的知名度,走了XML或通過myView.setVisibility(View.GONE);

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" 
    tools:context="de.project.amy.amyatanim.DataFragment"> 


    <Button 
     android:id="@+id/button" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:text="New Button 1" /> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_height="wrap_content" 
     android:text="New Button 2" /> 


</LinearLayout> 

心裏有點棘手與RelativeLayout的。在這裏,你必須設置空間和button4的可見性消失,並且設置按鈕5的寬度以匹配父項,全部以編程方式,但並非不可能。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New Button4" 
     android:id="@+id/button4" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:layout_toLeftOf="@+id/space"/> 

    <View 
     android:id="@+id/space" 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true"/> 
    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="New Button5" 
     android:id="@+id/button5" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_toRightOf="@+id/space"/> 
</RelativeLayout> 
+0

你是我的英雄!爲什麼這個工作? –

+0

LinearLayout中具有** ** **權重的視圖在它們之間平均分配空間 - 所以如果一個消失了,另一個可佔據整個空間。你也可以嘗試不同的權重和更多的視圖,它會工作。由於沒有設置weightSum,因此LinearLayout將不會「填充」View已離開的空間。 – yennsarah

+0

Ahh好吧,因爲唯一的視圖有1的權重,它將填充空間,但是當有n個視圖的權重爲n時,它就像weightSum是n一樣。合理! –

相關問題