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

时间:2017-07-16 13:06:02

标签: android spinner android-view android-adapter android-resources

我查看了这个问题Difference between android.R.layout.simple_spinner_dropdown_item and android.R.layout.simple_spinner_item,但找不到我的问题的答案。

我可以看到simple_spinner_item和simple_spinner_dropdown_item之间存在差异。但为什么我需要同时设置它们? Spinner布局的哪个部分由setAdapter() (simple_spinner_item )中设置的布局控制,哪个布局设置为setDropDownViewResource() (simple_spinner_dropdown_item)

现在我无法理解为什么我不能做相反的事情:将simple_spinner_item与setDropDownViewResource()simple_spinner_dropdown_itemsetAdapter()一起使用?

2 个答案:

答案 0 :(得分:1)

我看到了混乱。重新说明:"为什么我甚至向适配器的构造函数提供AbsSpinner#onMeasure()?它是如何使用的?"

布局资源,提供给适配器的构造函数is used以测量微调器行项目的视图。从mAdapter.getView() mResource调用,最终uses mDropDownResource(资源ID,从构造函数传递到适配器)以使视图膨胀。

另一方面,Spinner is used要对mDropDownResource的每一行进行充气。

请注意,如果您未明确提供mResource,则默认为适配器构造函数中提供的public ArrayAdapter(@NonNull Context context, @LayoutRes int resource, @IdRes int textViewResourceId, @NonNull List<T> objects) { ... mResource = mDropDownResource = resource; ... }

compile 'com.google.android.gms:play-services-wearable:10.0.1'

答案 1 :(得分:0)

对于 setAdapter ()中的 simple_spinner_item ,它用于显示微调器中每一行的项目。 对于 simple_spinner_dropdown_item ,当用户单击微调器中的下拉图标时,它用于显示所有项目行。 如果您想查看它们之间的差异,可以尝试以下步骤:

  • simple_spinner_item simple_spinner_dropdown_item

  • 创建自定义资源布局
  • 在两个布局中创建 TextView

  • 更改 TextView

  • 字体颜色

由此,您将看到差异..谢谢