Android自定义Dialog中RecyclerView未正常显示问题求助
问题原因
核心问题出在InputMeasurementActivity的Dialog视图绑定逻辑:
- 你提前通过
DialogColorListPickerBinding.inflate()生成了绑定实例dialogBinding,并对实例内的recyclerViewColorList完成了布局管理器、适配器配置,但调用dialog.setContentView()时传入的是布局idR.layout.dialog_color_list_picker,而非dialogBinding.getRoot()。这导致你配置的视图和Dialog实际加载的视图是两个完全独立的实例,Dialog内部的RecyclerView没有做任何初始化,自然无法渲染内容。 - 次要问题:你给
editTextWarnaKulitJari设置了android:clickable="false",会导致点击事件无法触发,Dialog无法弹出。
修复方案
1. 修正Dialog视图设置逻辑
修改initializeColorListPickerDialog()方法,将布局id替换为绑定实例的根视图,同时可给Dialog设置合理宽高避免布局压缩:
private void initializeColorListPickerDialog() { addDataToSkinColorRecylcerView(); // 替换布局id为绑定实例的根View dialog.setContentView(dialogBinding.getRoot()); dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); // 配置Dialog宽高 WindowManager.LayoutParams params = dialog.getWindow().getAttributes(); params.width = ViewGroup.LayoutParams.MATCH_PARENT; params.height = ViewGroup.LayoutParams.WRAP_CONTENT; dialog.getWindow().setAttributes(params); }
2. 修正EditText点击属性
在activity_input_measurement.xml中,将editTextWarnaKulitJari的android:clickable="false"改为android:clickable="true",或直接移除该属性(控件默认可点击)。
3. 可选优化
可删除dialog_color_list_picker.xml中RecyclerView的app:layout_behavior="@string/appbar_scrolling_view_behavior"属性,该属性在Dialog场景下无实际作用。
内容的提问来源于stack exchange,提问作者Jabal Logian
相关产品推荐
相关产品推荐

