线性布局中的子项具有相等的填充

时间:2011-06-22 23:02:15

标签: android xml layout

我目前正在设计一个带有5个按钮的ButtonBar(它们都是ImageButtons,但目前只有3个)。这是我的第一个安卓项目,所以我一直在学习。我试图平均地对每个按钮加权,而不是缩放它们(具有相等的填充而不是相等的宽度)。到目前为止,这是我的代码:

<LinearLayout
 android:id="@+id/back"
 android:orientation="horizontal"
 android:layout_height="50dip"
 android:layout_width="fill_parent" 
 android:layout_alignParentBottom="true" 
 android:background="#000000"
 style="@android:style/ButtonBar"
 android:weightSum="5"
 >

  <ImageButton
    android:id="@+id/info_button"
    android:padding="20dp"
    android:background="@drawable/info"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_weight="1"
    />
  <Button 
    android:id="@+id/wishlist_button" 
    android:text="@string/wish_label"
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content"
    android:layout_weight="1"
    android:padding="20dp"
    android:textSize="15dip"
    android:textColor="#b7b7b7"></Button>
  <Button 
    android:id="@+id/buy_button"
    android:text="@string/buy_label"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_weight="1"
    android:padding="20dp"
    android:textSize="15dip"
    android:textColor="#b7b7b7"/>
  <ImageButton
    android:id="@+id/dislike_button"
    android:padding="20dp"
    android:background="@drawable/dislike_button"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:layout_weight="1"
  />
  <ImageButton
    android:id="@+id/like_button"
    android:padding="20dp"
    android:background="@drawable/like_button"
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content"
    android:layout_weight="1"
   />

现在看起来像这样: 拉伸加权:http://i.imgur.com/MAfjp.png

这就是我希望它(紧密)的样子: 非拉伸均匀填充:http://i.imgur.com/vXTEy.png

感谢您的帮助。我已经找了一段时间的答案并且已经尝试了很多。

3 个答案:

答案 0 :(得分:6)

这是:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/back"
    android:orientation="horizontal"
    android:layout_height="50dip"
    android:layout_width="fill_parent" 
    android:layout_alignParentBottom="true" 
    android:background="#000000"
    style="@android:style/ButtonBar"
    android:gravity="center"
    >
   <ImageButton
    android:id="@+id/info_button"
    android:background="@null"
    android:src="@drawable/info"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:layout_weight="1"
    />
  <Button 
    android:id="@+id/wishlist_button" 
    android:text="@string/wish_label"
    android:background="@null"
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent"
    android:layout_weight="1"
    android:textSize="15dip"
    android:textColor="#b7b7b7"></Button>
  <Button 
    android:id="@+id/buy_button"
    android:text="@string/buy_label"
    android:background="@null"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:layout_weight="1"
    android:textSize="15dip"
    android:textColor="#b7b7b7"/>
  <ImageButton
    android:id="@+id/dislike_button"
    android:background="@null"
    android:src="@drawable/dislike_button"
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:layout_weight="1"
  />
  <ImageButton
    android:id="@+id/like_button"
    android:background="@null"
    android:src="@drawable/like_button"
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent"
    android:layout_weight="1"
   />
</LinearLayout>

我不知道style =“@ android:style / ButtonBar”是如何设置的,所以如果它没有正确显示,请尝试删除它。

答案 1 :(得分:1)

您可以在每个图像/按钮之间添加间隔元素,并将layout_weight分配给间隔元素而不是图像/按钮。所以它看起来像这样:

<LinearLayout
 android:id="@+id/back"
 android:orientation="horizontal"
 android:layout_height="50dip"
 android:layout_width="fill_parent" 
 android:layout_alignParentBottom="true" 
 android:background="#000000"
 style="@android:style/ButtonBar"
 >

  <ImageButton
    android:id="@+id/info_button"
    android:padding="20dp"
    android:background="@drawable/info"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    />
      <LinearLayout
        android:layout_height="wrap_content"            
        android:layout_weight="1" />
  />
  <Button 
    android:id="@+id/wishlist_button" 
    android:text="@string/wish_label"
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content"
    android:padding="20dp"
    android:textSize="15dip"
    android:textColor="#b7b7b7"></Button>
      <LinearLayout
        android:layout_height="wrap_content"            
        android:layout_weight="1" />
  <Button 
    android:id="@+id/buy_button"
    android:text="@string/buy_label"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
    android:padding="20dp"
    android:textSize="15dip"
    android:textColor="#b7b7b7"/>
      <LinearLayout
        android:layout_height="wrap_content"            
        android:layout_weight="1" />
  <ImageButton
    android:id="@+id/dislike_button"
    android:padding="20dp"
    android:background="@drawable/dislike_button"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content"
  />
      <LinearLayout
        android:layout_height="wrap_content"            
        android:layout_weight="1" />
  <ImageButton
    android:id="@+id/like_button"
    android:padding="20dp"
    android:background="@drawable/like_button"
    android:layout_height="wrap_content" 
    android:layout_width="wrap_content"
   />
</LinearLayout>

这可能不是最优雅的解决方案,因为它为您的布局添加了几个视图,但它在过去对我有用。

答案 2 :(得分:0)

您应该考虑在LinearLayout中仅使用具有相同重量的相同尺寸图像的图像按钮。

此致  斯特凡