2013-07-11 111 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

上面编辑的布局。 –