2013-07-11 147 views
0

我希望在行的右側有按鈕B1和B2,按鈕A1和A2位於該行剩餘空間的中心。避免佈局冗餘

Centering within remainder

這是可能的,而不包裹按鈕的兩次

下面是具體問題的具體細節。

Eclipse中表示,「這的LinearLayout佈局或RelativeLayout的父母可能是無用的」批評了兩家母公司佈局,@id/buttonAx

<?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" > 

    <LinearLayout 
     android:id="@+id/myRightMostLL" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" > 

     <Button 
      android:id="@+id/buttonB1" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="B1" /> 

     <Button 
      android:id="@+id/buttonB2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="B2" /> 

    </LinearLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_toLeftOf="@id/myRightMostLL"> 

     <LinearLayout 
      android:id="@+id/remainderLL" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerHorizontal="true"> 

      <Button 
       android:id="@+id/buttonA1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="A1" /> 

      <Button 
       android:id="@+id/buttonA2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="A2" /> 

     </LinearLayout> 

    </RelativeLayout> 

</RelativeLayout> 

然而我需要這種無用的能夠將按鈕A置於按鈕B佈置後剩餘的空間中。只有一個按鈕A的父包裝佈局可以獲得相同的效果嗎?

在這樣的佈局中,我也經常質疑@ id/myRightMostLL是否真的有必要在文件中出現第一個

+0

除了爲按鈕A設置左右邊距之外,我無法真正想到另一種解決方案,但我不認爲這將是一種多用途的方法。老實說,如果它正在產生所需的結果,我只是壓制這個警告,因爲它只是不明白你需要什麼。 – user2483079

+0

附加按鈕是否與ButtonA,ButtonB或每個按鈕分組?他們將如何定位?最好告訴我們您的實際需求,而不是模糊的警告,即只有兩個按鈕的解決方案不適合您。 –

+0

@TedHopp Done .. – Calaf

回答

1

我想你可以用一個佈局做到這一點,使用一對夫婦的「填充物」的觀點佔用空間:

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

    <View 
     android:layout_width="0" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 
    <Button 
     android:id="@+id/button1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="A1" /> 
    <Button 
     android:id="@+id/button2" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="A2" /> 
    <View 
     android:layout_width="0" 
     android:layout_height="wrap_content" 
     android:layout_weight="1" /> 
    <Button 
     android:id="@+id/button3" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="A3" /> 
    <Button 
     android:id="@+id/button4" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="A4" /> 
</LinearLayout> 

如果你的目標API 14或更高版本,可以使用Space小部件,而不是在上面ViewSpace只是一個輕量級的替代View,專爲這種事情設計。

+0

令人印象深刻的第二個項目。所以layout_weight只是一種彈簧。沒有必要用於保持該屬性的觀點是相鄰或到分區(如加起來的總大小)的父。 – Calaf

+0

@Calaf - 沒有。讓空白的視圖吃掉所有額外的空間。 –

1

解決以下不顯示可能是無用的警告:)

<?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="wrap_content" 
    android:orientation="horizontal" > 

    <RelativeLayout 
     android:layout_toLeftOf="@+id/layRight" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal" 
     > 
       <Button 
        android:id="@+id/button3" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_toRightOf="@+id/button4" 
        android:text="Button" /> 

      <Button 
       android:id="@+id/button4" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

    </RelativeLayout> 

    <RelativeLayout 
     android:id="@+id/layRight" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" > 

       <Button 
        android:id="@+id/button1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_toRightOf="@+id/button2" 
        android:text="Button" /> 

      <Button 
       android:id="@+id/button2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="Button" /> 

    </RelativeLayout> 


</RelativeLayout> 

http://clip2net.com/s/5nna7M

+0

這正是我想要避免的答案(因爲我不知道如何將它擴展到四個按鈕的情況)。但也許你會。你可以看看(現在擴展的)問題,看看你的答案是否可以適應它? – Calaf

+0

我將盡快提供修改。 –

+0

上面編輯的佈局。 –