【问题标题】:Children in Linear Layout with equal padding具有相等填充的线性布局中的子级
【发布时间】:2013-03-05 19:07:05
【问题描述】:

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

<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

感谢您的帮助。我一直在寻找答案,并且已经尝试了很多。

【问题讨论】:

    标签: android xml layout


    【解决方案1】:

    这里是:

    <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" 是如何设置的,所以如果它没有正确显示,请尝试删除它。

    【讨论】:

      【解决方案2】:

      您可以在每个图像/按钮之间添加一个间隔元素,并将 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>
      

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

      【讨论】:

        【解决方案3】:

        您应该考虑在 LinearLayout 中仅使用具有相同大小和相同权重的图像按钮。

        问候, 斯蒂芬

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-05-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多