Android 回收器视图项中的间距

Android 回收器视图项中的间距,android,android-recyclerview,Android,Android Recyclerview,我面临着一个我无法解决的问题。我在谷歌上搜索了一下,但找不到我想要的解决方案。我有一个回收视图,如下所示: <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="wrap_content" android:scrollba

我面临着一个我无法解决的问题。我在谷歌上搜索了一下,但找不到我想要的解决方案。我有一个回收视图,如下所示:

<android.support.v7.widget.RecyclerView
        android:id="@+id/recycler_view"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:scrollbars="vertical"
        android:paddingBottom="70dp"
        android:layout_marginTop="@dimen/activity_vertical_margin"

如果您注意到,每个项目的文本上方和文本底部没有间距。最有可能是由于包装内容。我想在顶部和底部的项目单元格中添加空间。像这样的图像

如果你注意到了,我画了红色箭头来表示额外的空间和每个项目列表中心的文本。如何在单元格中添加空格(文本顶部的空格和文本底部的空格?左侧和右侧的空格也会很酷


当我在谷歌上搜索时,我只找到了在项目之间添加间距的代码。但我要找的是在单元格项目本身内添加间距,就像附加的第二张图片一样。我会感谢你的帮助。提前谢谢你。你必须在你的回收项目中添加填充。如果你使用的是android的默认项目布局,我会建议est创建您自己的布局。

您必须为您的回收项目添加填充。如果您使用android的默认项目布局,我建议您创建您自己的布局。

您肯定在为您的回收项目视图使用适配器,该适配器负责创建子项。正如@Cocord所说,您必须创建自己的布局您必须在适配器中(通常在onCreateViewHolder中)执行此操作。 您可以使用充气器服务为每个子级充气xml布局

recyclerview_child.xml

<?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="10dp">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"/>

    ...

</LinearLayout>

...
在您的适配器中执行以下操作

public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {

    private List<Whatever> mData;
    private LayoutInflater mInflater;

    MyRecyclerViewAdapter(Context context, List<Whatever> data) {
        this.mInflater = LayoutInflater.from(context);
        this.mData = data;
    }

    // inflates the child layout from xml when needed
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = mInflater.inflate(R.layout.recyclerview_child, parent, false);
        return new ViewHolder(view);
    }

    // binds the data to the TextView in each child
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Whatever obj = mData.get(position);
        holder.myTextView.setText(obj.getName());
        ...
    }

    // total number of children
    @Override
    public int getItemCount() {
        return mData.size();
    }

    // stores and recycles views as they are scrolled off screen
    public class ViewHolder extends RecyclerView.ViewHolder{
        TextView myTextView;

        ViewHolder(View itemView) {
            super(itemView);
            myTextView = itemView.findViewById(R.id.tv);
        }
    }
}
公共类MyRecycleServiceAdapter扩展了RecycleView.Adapter{
私有列表数据;
私人停车场;
MyRecycleServiceAdapter(上下文、列表数据){
this.mInflater=LayoutInflater.from(上下文);
this.mData=数据;
}
//根据需要从xml展开子布局
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
View=mInflater.inflate(R.layout.recyclerview\u子项、父项、false);
返回新的ViewHolder(视图);
}
//将数据绑定到每个子级中的TextView
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
无论什么obj=mData.get(位置);
holder.myTextView.setText(obj.getName());
...
}
//儿童总数
@凌驾
public int getItemCount(){
返回mData.size();
}
//在屏幕外滚动视图时存储和回收视图
公共类ViewHolder扩展了RecyclerView.ViewHolder{
文本视图myTextView;
ViewHolder(视图项视图){
超级(项目视图);
myTextView=itemView.findViewById(R.id.tv);
}
}
}

希望它有帮助

当然,您正在使用一个适配器来创建回收器视图,该适配器负责创建子视图。正如@Cocord所说,您必须创建自己的布局。您必须在适配器中完成此操作(通常在onCreateViewHolder中)。 您可以使用充气器服务为每个子级充气xml布局

recyclerview_child.xml

<?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="10dp">

    <TextView
        android:id="@+id/tv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="20sp"/>

    ...

</LinearLayout>

...
在您的适配器中执行以下操作

public class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.ViewHolder> {

    private List<Whatever> mData;
    private LayoutInflater mInflater;

    MyRecyclerViewAdapter(Context context, List<Whatever> data) {
        this.mInflater = LayoutInflater.from(context);
        this.mData = data;
    }

    // inflates the child layout from xml when needed
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = mInflater.inflate(R.layout.recyclerview_child, parent, false);
        return new ViewHolder(view);
    }

    // binds the data to the TextView in each child
    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        Whatever obj = mData.get(position);
        holder.myTextView.setText(obj.getName());
        ...
    }

    // total number of children
    @Override
    public int getItemCount() {
        return mData.size();
    }

    // stores and recycles views as they are scrolled off screen
    public class ViewHolder extends RecyclerView.ViewHolder{
        TextView myTextView;

        ViewHolder(View itemView) {
            super(itemView);
            myTextView = itemView.findViewById(R.id.tv);
        }
    }
}
公共类MyRecycleServiceAdapter扩展了RecycleView.Adapter{
私有列表数据;
私人停车场;
MyRecycleServiceAdapter(上下文、列表数据){
this.mInflater=LayoutInflater.from(上下文);
this.mData=数据;
}
//根据需要从xml展开子布局
@凌驾
public ViewHolder onCreateViewHolder(视图组父级,int-viewType){
View=mInflater.inflate(R.layout.recyclerview\u子项、父项、false);
返回新的ViewHolder(视图);
}
//将数据绑定到每个子级中的TextView
@凌驾
公共无效onBindViewHolder(ViewHolder,int位置){
无论什么obj=mData.get(位置);
holder.myTextView.setText(obj.getName());
...
}
//儿童总数
@凌驾
public int getItemCount(){
返回mData.size();
}
//在屏幕外滚动视图时存储和回收视图
公共类ViewHolder扩展了RecyclerView.ViewHolder{
文本视图myTextView;
ViewHolder(视图项视图){
超级(项目视图);
myTextView=itemView.findViewById(R.id.tv);
}
}
}

希望有帮助

如何添加填充物?如何添加填充物?