XML 中默认条目的 Android Spinner 项目布局

mav*_*ros 5 java android android-layout android-xml android-spinner

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

groupSpinner.setAdapter(new ArrayAdapter<>(this,
                 android.R.layout.simple_spinner_item, groupNames));
Run Code Online (Sandbox Code Playgroud)

另一个是使用字符串数组预先填充在 XML 布局中。

<Spinner ...
    android:entries="@array/my_items_here" />
Run Code Online (Sandbox Code Playgroud)

两个 Spinner 看起来都很好。但是,当他们的项目显示时,子布局dropdowndialog模式和模式中都不匹配。我一定遗漏了一些非常简单的东西,但是如何将它们设置为使用相同的布局(希望如此android.R.layout.simple_spinner_item),而不创建我自己的自定义布局,或者在运行时加载 XML 字符串数组?

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

请参阅以下屏幕截图:

以编程方式填充的微调器 XML 预填充 Spinner

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

Moi*_*han 7

尝试这个 ((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);
}
Run Code Online (Sandbox Code Playgroud)

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