RecyclerView中添加CardView不显示问题求助(附content.xml代码)
嘿,我来帮你排查下RecyclerView里CardView不显示的问题!从你贴的代码片段来看,先给你列几个最容易踩的坑,你可以逐一检查:
确认CardView依赖是否正确引入
这是新手最容易忘的一步!如果用的是你代码里的android.support.v7.widget.CardView,要在Module级别的build.gradle里添加support库依赖:implementation 'com.android.support:cardview-v7:28.0.0'要是已经迁移到AndroidX了,就换成:
implementation "androidx.cardview:cardview:1.0.0"同步完依赖再试试。
检查CardView的布局参数是否完整
你的代码片段里CardView的layout_width和layout_height没写全!这两个属性是必须的,否则CardView会因为尺寸为0而完全不显示。补全后的代码应该类似:<android.support.v7.widget.CardView android:id="@+id/your_card_id" android:layout_width="match_parent" android:layout_height="wrap_content" android:elevation="3dp" android:padding="8dp"> <!-- 这里放CardView内部的TextView、ImageView等内容 --> </android.support.v7.widget.CardView>验证RecyclerView的Adapter是否正确绑定布局
要确保Adapter的onCreateViewHolder方法正确加载了你的content.xml布局,别写错文件名或者用错LayoutInflater的参数。示例代码如下:@Override public YourViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { // 注意第三个参数要传false,避免布局被强行添加到parent View itemView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.content, parent, false); return new YourViewHolder(itemView); }排查布局层级冲突问题
外层的LinearLayout会不会把CardView挤没了?比如检查LinearLayout的padding是否过大,或者CardView的margin设置不合理。另外可以给CardView加个明显的背景色,方便排查:android:background="@color/white"低版本系统的阴影兼容(可选)
如果你支持的系统版本低于API 21,android:elevation不会生效,但这不会导致CardView不显示,只是没有阴影。如果需要阴影兼容,可以添加support库的专属属性:xmlns:app="http://schemas.android.com/apk/res-auto" <!-- 加到CardView里 --> app:cardElevation="3dp"
如果做完以上检查还是没解决问题,可以把完整的content.xml代码和RecyclerView的Adapter代码贴出来,我再帮你进一步分析!
内容的提问来源于stack exchange,提问作者oshabz

