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);
}
}
}
希望有帮助如何添加填充物?如何添加填充物?