【问题标题】:Add space between each item layout in inflate layout android在充气布局android中的每个项目布局之间添加空格
【发布时间】:2017-02-24 02:34:15
【问题描述】:

我做膨胀布局。我想在布局中的每个项目之间给出间距。如下图所示

这是我在 xml 中的主要代码。父布局

<LinearLayout
            android:id="@+id/mLayout"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:background="#F2F2F2"
            android:orientation="vertical"
            android:padding="2dp"/>

这是我的膨胀布局

<?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"
android:padding="3dp"
android:layout_marginTop="5dp"
android:background="@color/white_pure">


<LinearLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="5"
    android:orientation="vertical">

    <TextView
        android:textStyle="bold"
        android:textSize="12sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"/>

    <TextView
        android:layout_width="wrap_content"
        android:textSize="9sp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="5dp"/>


</LinearLayout>


<TextView
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    android:layout_weight="3"
    android:gravity="right"
    android:layout_marginRight="5dp"
    android:textColor="@color/blueTransfer"/>

    </LinearLayout>

我怎样才能得到像图像(左侧)。在膨胀布局中的每个项目之间有间距。希望任何人都可以帮助我。

【问题讨论】:

  • 使用边距而不是内边距。然后,为每个部分设置背景白色和灰色。
  • 怎么样?我想我已经为每个布局设置了边距。呵呵
  • 能否提供完整的每个项目视图xml?

标签: android layout spacing android-inflate


【解决方案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"
    android:padding="3dp"
    >
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_margin="5dp"
        android:background="#fff"
        >
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="5"
            android:orientation="vertical"
            >
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:text="aaaaaaaaaaaa"
                android:textColor="#000"
                android:textSize="12sp"
                android:textStyle="bold"
                />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="5dp"
                android:text="bbbbbbbbbb"
                android:textColor="#000"
                android:textSize="9sp"
                />
        </LinearLayout>
        <TextView
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_marginRight="5dp"
            android:layout_weight="3"
            android:gravity="right|center"
            android:text="Details"
            android:textColor="#00f"
            />
    </LinearLayout>

</LinearLayout>

另一种解决方案是

<?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:layout_marginStart="5dp"
    android:layout_marginEnd="5dp"
    android:background="#fff"
    android:orientation="horizontal"
    android:padding="3dp"
    >
    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="5"
        android:orientation="vertical"
        >
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:text="aaaaaaaaaaaa"
            android:textColor="#000"
            android:textSize="12sp"
            android:textStyle="bold"
            />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:text="bbbbbbbbbb"
            android:textColor="#000"
            android:textSize="9sp"
            />
    </LinearLayout>
    <TextView
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_marginRight="5dp"
        android:layout_weight="3"
        android:gravity="right|center"
        android:text="Details"
        android:textColor="#00f"
        />
</LinearLayout>

那么如果你使用ListView,你可以通过使用android:dividerhttps://stackoverflow.com/a/5309871/5381331来增加ListView项目之间的间距

或者对于RecyclerViewHow to add dividers and spaces between items in RecyclerView?

【讨论】:

  • @user7345006 您也可以查看解决方案 2 ;)
  • 但是这个 android:gravity="right|center" 我不能用 .. 出错了 .. 如何让单词 Details 居中正确?
【解决方案2】:

试试这个,

    <?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:layout_marginTop="5dp"
        android:background="@color/white_pure"
        android:orientation="horizontal"
        android:padding="3dp">


        <RelativeLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_toStartOf="@+id/tv_details"
            android:orientation="vertical"
            android:padding="10dp">

            <TextView
                android:id="@+id/tv_title"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textSize="12sp"
                android:textStyle="bold" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/tv_title"
                android:layout_marginTop="5dp"
                android:textSize="9sp" />


        </RelativeLayout>


        <TextView
            android:id="@+id/tv_details"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:layout_marginRight="5dp"
            android:layout_weight="3"
            android:gravity="right"
            android:padding="10dp"
            android:layout_centerVertical="true"
            android:textColor="@color/blueTransfer" />

    </RelativeLayout>

【讨论】:

    【解决方案3】:

    您还可以通过如下 java 代码设置两个膨胀布局之间的空间(边距),它适用于我。

    View v =LayoutInflater.from(this).inflate(R.layout.item,null);
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
    layoutParams.setMargins(0,10,0,0);
    v.setLayoutParams(layoutParams);
    

    希望对你有帮助

    【讨论】:

      【解决方案4】:
      <?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="vertical"
      android:layout_marginTop="5dp"
      android:background="@color/white_pure">
      
      <LinearLayout
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:orientation="horizontal">
      
          <LinearLayout
              android:layout_width="0dp"
              android:layout_height="wrap_content"
              android:layout_weight="5"
              android:orientation="vertical">
      
              <TextView
                  android:textStyle="bold"
                  android:textSize="12sp"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content"
                  android:text="Order Attempt 1"
                  android:layout_marginLeft="5dp"/>
      
              <TextView
                  android:layout_width="wrap_content"
                  android:textSize="9sp"
                  android:layout_height="wrap_content"
                  android:text="aa"
                  android:layout_marginLeft="5dp"/>
      
      
          </LinearLayout>
      
      
          <TextView
              android:layout_width="0dp"
              android:layout_height="wrap_content"
              android:layout_weight="3"
              android:gravity="right"
              android:layout_marginRight="5dp"
              android:text="DETAILS"
              android:textColor="@color/blueTransfer"/>
      </LinearLayout>
      
      <View
          android:layout_width="fill_parent"
          android:layout_height="3dp"
          android:background="#F2F2F2" />
      

      我也只是觉得这个技巧..放视图..它也有效..谢谢大家帮助我..:-)

      【讨论】:

        【解决方案5】:

        只需在项目的顶部组中使用填充而不是边距。列表视图使用 margingLeft 和 margingRight.item 这样的代码。

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:paddingTop="3dp"
        android:paddingBottom="3dp"
        android:background="@color/white_pure">
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多