我看了这个问题 安卓之间的区别。R.layout.simple_spinner_dropdown_item和安卓。R.layout.simple_spinner_item,但找不到我问题的答案。
我可以看到simple_spinner_item和simple_spinner_dropdown_item之间存在差异。但是为什么我需要同时设置它们呢?微调器布局的哪个部分由setAdapter() (simple_spinner_item )
中设置的布局控制,哪个部分由setDropDownViewResource() (simple_spinner_dropdown_item)
中设置的布局控制?
现在我不明白为什么我不能做相反的事情:将simple_spinner_item与setDropDownViewResource()
一起使用,simple_spinner_dropdown_item
与setAdapter()
一起使用?
我看到了混乱。改写一下:"为什么我甚至向适配器的构造函数提供android.R.layout.simple_spinner_item
?如何使用它?
提供给适配器构造函数的布局资源用于测量微调行项的视图。调用 FromAbsSpinner#onMeasure()
mAdapter.getView()
,它最终使用mResource
(从构造函数传入适配器的资源 ID)来扩充视图。
另一方面,mDropDownResource
用于给每排Spinner
充气。
请注意,如果未显式提供mDropDownResource
,则默认为适配器构造函数中提供的mResource
。
public ArrayAdapter(@NonNull Context context, @LayoutRes int resource,
@IdRes int textViewResourceId, @NonNull List<T> objects) {
...
mResource = mDropDownResource = resource;
...
}
对于setAdapter() 中的simple_spinner_item,它用于显示微调器中的每一行项目。 对于simple_spinner_dropdown_item,它用于在用户单击微调器中的下拉图标时显示所有项目行。 如果您想查看两者之间的区别,可以尝试以下步骤:
-
为simple_spinner_item和simple_spinner_dropdown_item创建自定义资源布局
-
在两种布局中创建文本视图
-
更改文本视图的字体颜色
从中,您将看到差异.. 谢谢