2016-03-01 67 views
0

我有2個按鈕(左和右)以線性佈局(水平)排列。如果權利是空白的,我想留下所有的空間。如果正確的內容,我希望它堅持正確的,然後留下儘可能多的剩餘空間。我該怎麼做呢?如何在水平線性佈局中將按鈕強制爲右側的另一個按鈕?

很確定我必須使用線性佈局,因爲相對佈局會導致重疊。

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"   
    android:gravity="center_vertical" 
    android:orientation="horizontal" > 

    <Button    
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:ellipsize="end" 
     android:singleLine="true" 
     android:text="this text takes priority and kicks everything off screen (not desired behavior)" /> 

    <View 
     android:layout_width="0dp" 
     android:layout_height="0dp" 
     android:layout_weight="1"/> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content"    
     android:text="i need this text to take priority over the other button"/> 
</LinearLayout> 
+1

爲什麼不使用像你一樣的權重? –

+0

當你說「如果權利是空白的」,你的意思是按鈕文字?它是由代碼控制的嗎? – thetonrifles

+0

@SalmanTariq是的,這是行之有效的,但如果我想讓右邊的按鈕不顯示它是否沒有文字呢?我必須以編程方式做到這一點? – BrettG

回答

1

A RelativeLayout將適用於此。通過用alignParent將兩個按鈕固定到它們各自的邊上,並使用toLeftOf將第一個按鈕定位在第二個按鈕的左邊 - 您將獲得一個靈活的左按鈕,它不會與右按鈕重疊。

<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_toLeftOf="@id/button2" 
     android:text="Left Button" /> 

    <Button 
     android:id="@+id/button2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:text="Right Button"/> 
</RelativeLayout> 
+0

防止重疊的關鍵線是「android :layout_toLeftOf = 「@ ID/BUTTON2」」。謝謝,did not知道 – BrettG

+0

感謝您更新您的評論,請標記此正確,如果它爲你工作。 –

0

這可以很容易地通過相對佈局來實現,並且總是建議使用相對佈局。只要先查看左邊的內容,然後製作內容並分別與匹配父級製作另一個視圖。

+0

你是什麼意思使權利「配對父母」?會不會造成重疊? – BrettG

+0

如果你知道相對佈局比我們可以處理每件事情要好,說明這個觀點是正確的,或者這個觀點是嚴格的正確的還是左邊的,誰來追趕什麼,等等。 – UMESH0492

相關問題