【问题标题】:Difference between setAdapter() and setDropDownViewResource() on SpinnerSpinner 上的 setAdapter() 和 setDropDownViewResource() 之间的区别
【发布时间】:2017-07-16 13:06:01
【问题描述】:

我查看了这个问题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() 一起使用?

【问题讨论】:

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


    【解决方案1】:

    我看到了混乱。换种说法:“为什么我还要向适配器的构造函数提供android.R.layout.simple_spinner_item?它是如何使用的?”

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

    另一方面,mDropDownResourceis usedSpinner 的每一行进行膨胀。

    注意,如果您没有明确提供mDropDownResource,则默认为适配器构造函数中提供的mResource

    public ArrayAdapter(@NonNull Context context, @LayoutRes int resource,
            @IdRes int textViewResourceId, @NonNull List<T> objects) {
        ...
        mResource = mDropDownResource = resource;
        ...
    }
    

    【讨论】:

      【解决方案2】:

      对于setAdapter()中的simple_spinner_item,它用来显示spinner中的每一行item。 对于 simple_spinner_dropdown_item,它用于在用户单击微调器中的下拉图标时显示所有行的项目。 如果你想看看两者的区别,可以试试下面的步骤:

      • simple_spinner_itemsimple_spinner_dropdown_item 创建自定义资源布局

      • 在两种布局中创建一个 TextView

      • 更改TextView

      • 字体颜色

      从中,您将看到不同之处..谢谢

      【讨论】:

        猜你喜欢
        • 2014-07-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-25
        • 2020-05-10
        • 2014-09-20
        • 2010-10-28
        • 2015-10-04
        相关资源
        最近更新 更多