Spinner 上的 setAdapter() 和 setDropDownViewResource() 之间的区别



我看了这个问题 安卓之间的区别。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_itemsetAdapter()一起使用?

我看到了混乱。改写一下:"为什么我甚至向适配器的构造函数提供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_itemsimple_spinner_dropdown_item创建自定义资源布局

  • 在两种布局中创建文本视图

  • 更改文本视图字体颜色

从中,您将看到差异.. 谢谢

相关内容

  • 没有找到相关文章

最新更新