如何在 GridLayoutManager 中设置卡片之间的垂直距离
How to set vertical distance between cards in GridLayoutManager
我有一个简单的card.xml
布局,其中显示了一张图片,它的大小是 300px x 300px。
为了显示卡片,我制作了 Recycler View 和 RecyclerAdapter,并初始化了所有东西以网格布局的形式工作。
我的问题是:显示了视图,但两行卡片之间的垂直距离太大,我想靠近一点。
这是它的样子:
对于下一行,我必须滚动:
有什么可以解决的吗?
卡片布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foreground="?selectableItemBackground"
android:clickable="true"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/java"></ImageView>
</LinearLayout>
</androidx.cardview.widget.CardView>
适配器
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card,parent,false);
return (ViewHolder) new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return 4;
}
class ViewHolder extends RecyclerView.ViewHolder {
ViewHolder(View itemView){
super(itemView);}
}
}
主要Activity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = findViewById(R.id.recycler);
recyclerView.setLayoutManager(new GridLayoutManager(this,2));
RecyclerAdapter adapter = new RecyclerAdapter();
recyclerView.setAdapter(adapter);
}
}
PS: 这都是实验室项目,因此跳过了动态初始化卡片内容等内容。
在我看来,您的问题出在 CardView
的布局上。
尝试替换 android:layout_height="wrap_content"
中的 android:layout_height="match_parent"
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foreground="?selectableItemBackground"
android:clickable="true"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/java"></ImageView>
</LinearLayout>
</androidx.cardview.widget.CardView>
我有一个简单的card.xml
布局,其中显示了一张图片,它的大小是 300px x 300px。
为了显示卡片,我制作了 Recycler View 和 RecyclerAdapter,并初始化了所有东西以网格布局的形式工作。
我的问题是:显示了视图,但两行卡片之间的垂直距离太大,我想靠近一点。
这是它的样子:
对于下一行,我必须滚动:
有什么可以解决的吗?
卡片布局
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foreground="?selectableItemBackground"
android:clickable="true"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/java"></ImageView>
</LinearLayout>
</androidx.cardview.widget.CardView>
适配器
public class RecyclerAdapter extends RecyclerView.Adapter<RecyclerAdapter.ViewHolder> {
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext())
.inflate(R.layout.card,parent,false);
return (ViewHolder) new ViewHolder(v);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
return 4;
}
class ViewHolder extends RecyclerView.ViewHolder {
ViewHolder(View itemView){
super(itemView);}
}
}
主要Activity
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = findViewById(R.id.recycler);
recyclerView.setLayoutManager(new GridLayoutManager(this,2));
RecyclerAdapter adapter = new RecyclerAdapter();
recyclerView.setAdapter(adapter);
}
}
PS: 这都是实验室项目,因此跳过了动态初始化卡片内容等内容。
在我看来,您的问题出在 CardView
的布局上。
尝试替换 android:layout_height="wrap_content"
android:layout_height="match_parent"
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foreground="?selectableItemBackground"
android:clickable="true"
android:orientation="horizontal">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:src="@drawable/java"></ImageView>
</LinearLayout>
</androidx.cardview.widget.CardView>