如何为膨胀的ListView添加边距值?

时间:2017-09-03 06:59:44

标签: android listview android-linearlayout

这是我的每行代码的代码。

Worksheet_BeforeDoubleClick

如你所见,我有边距设置,如果我检查预览,它也会显示。

我填充了这个listivew膨胀。 这是activity_sladice.xml。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="match_parent"
    android:layout_height="120dp"
    android:id="@+id/recipe_container"
    android:layout_margin="12dp"
    android:background="#f1f1f1">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <TextView
            android:id="@+id/recipe_name_text_view"
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:gravity="center_vertical"
            android:textSize="32sp"
            android:text="DUMMY TEXT"/>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="60dp"
            android:layout_weight="1"
            android:gravity="center_vertical"
            android:orientation="horizontal">


            <TextView
                android:id="@+id/recipe_time_text_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="DUMMY TEXT"/>

            <TextView
                android:id="@+id/recipe_difficulty_text_view"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="DUMMY TEXT"/>

        </LinearLayout>

    </LinearLayout>


    <ImageView
        android:id="@+id/recipe_thumbnail_image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/sladice"/>


</LinearLayout>

现在每一行都在一起,左,右,底,顶之间没有间距。

如果我向listview添加边距或填充,它只适用于整个列表,而不是每行。

怎么做?我知道我可以在每一行之间添加分隔符,但我也想要左右间距。

这是来自自定义适配器的getView方法。

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/recipe_list"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.android.recepti.Sladice"
    android:background="@color/colorPrimary">

</ListView>

3 个答案:

答案 0 :(得分:0)

如果要向ListView添加边距,请在列表视图中添加边距。 如果要为项添加边距,请为项添加边距。

很简单。

但是,我建议您使用ConstraintLAyout。和RecyclerView而不是ListView。

答案 1 :(得分:0)

尝试在LinearLayout中使用填充,并创建另一个LinearLayout作为原始子项,并将background属性移动到它。

答案 2 :(得分:0)

尝试使用以下方法在getView方法中以编程方式设置margin。

public static void setMarginLeft(View v, int left) {
    ViewGroup.MarginLayoutParams params =   
                                (ViewGroup.MarginLayoutParams)v.getLayoutParams();
    params.setMargins(left, params.topMargin, 
                            params.rightMargin, params.bottomMargin);
}