编程语言
首页 > 编程语言> > java-XML默认条目的Android Spinner项目布局

java-XML默认条目的Android Spinner项目布局

作者:互联网

我有两个微调器.其中之一在运行时填充.

groupSpinner.setAdapter(new ArrayAdapter<>(this,
                 android.R.layout.simple_spinner_item, groupNames));

另一个是使用String数组预先填充到XML布局中的.

<Spinner ...
    android:entries="@array/my_items_here" />

两个微调器看起来都不错.但是,当显示其项目时,子菜单布局在下拉菜单和对话框模式下均不匹配.
我必须缺少一些非常简单的东西,但是如何设置它们以使用相同的布局(希望是android.R.layout.simple_spinner_item),而无需创建自己的自定义布局,也不会在运行时加载XML String数组?

这似乎是一件基本的事情,但是我找不到答案,并且已经搜索了很多东西.

请参见下面的屏幕截图:

Programmatically Populated Spinner
XML Pre-populated Spinner

*请原谅第二张图片中希腊字母的使用.我已经检查并确认该问题与希腊字符的使用无关.

解决方法:

试试这个((ArrayAdapter)preFilledSpinner.getAdapter()).setDropDownVie‌wResource(android.R.‌layout.simple_spinne‌r_item);

要知道它是如何工作的,只需检查AppCompatSpinner的代码,下面是AppCompatSpinner的默认代码,以弄清传递条目时它是如何工作的.

final CharSequence[] entries = a.getTextArray(R.styleable.Spinner_android_entries);
if (entries != null) {
    final ArrayAdapter<CharSequence> adapter = new ArrayAdapter<>(context,android.R.layout.simple_spinner_item, entries);
        adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);
        setAdapter(adapter);
}

当我们通过XML传递条目时,它们将创建一个ArrayAdapter并应用代码adapter.setDropDownViewResource(R.layout.support_simple_spinner_dropdown_item);您可以看到,默认情况下设置了R.layout.support_simple_spinner_dropdown_item,该参数应适用于参数,但不幸的是它们已将其修复

标签:android-layout,android-xml,android-spinner,java,android
来源: https://codeday.me/bug/20191026/1935808.html