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

时间:2017-01-15 20:36:54

标签: java android android-layout android-spinner android-xml

我有两个Spinners。其中一个是在运行时填充的。

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

另一个使用String数组在XML布局中预先填充。

dropdown

两个Spinners都很好。但是,在显示其项目时,子项布局在dialogandroid.R.layout.simple_spinner_item模式下都不匹配。 我必须遗漏一些非常简单的东西,但如何设置它们使用相同的布局(希望df.groupby(level=0).agg(lambda x: len(x.unique())) val1 val2 index1 A 2 1 ),而不创建我自己的自定义布局,或者在运行时加载XML String数组-time?

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

请参阅下面的屏幕截图:

Programmatically Populated Spinner XML Pre-populated Spinner

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

2 个答案:

答案 0 :(得分:3)

试试 ng-html-compile

要知道它的工作原理,只需检查ng-bind-html的代码,然后的默认代码为((ArrayAdapter)preFilledSpinner.getAdapter()).setDropDownVie‌wResource(android.R.‌​layout.simple_spinne‌​r_item);,以确定传递条目时的工作原理。 < / p>

AppCompatSpinner

当我们通过XML传递条目时,他们会创建一个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); } ,您可以看到{默认设置ArrayAdapter,这应该适用于参数,但不幸的是他们已经修好了

答案 1 :(得分:1)

我是如何在最近的项目中完成的。 Java代码:

public void spinner_settings() {

    Spinner spinner = (Spinner) findViewById(R.id.spinner);

    adapter =
            ArrayAdapter.createFromResource(this, R.array.activity_list, android.R.layout.simple_spinner_item);
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner.setAdapter(adapter);
    spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
            switch(position){
                case 0:
                    // TO-DO something when item selected
                    break;
                case 1:
                    // TO-DO something when item selected
                    break;
                case 2:
                    // TO-DO something when item selected
                    break;
            }
        }

        @Override
        public void onNothingSelected(AdapterView<?> parentView) {
            // your code here
        }

    });
}

<强>水库&GT;值 - &gt;的strings.xml

<resources>
    <string-array name="activity_list">
        <item>MainFrame</item>
        <item>Settings</item>
        <item>Translation Rules</item>
    </string-array>
</resources>

<强>水库&GT;值 - &gt; styles.xml

<resources>
 <!-- For the resting Spinner style -->
        <item name="android:spinnerItemStyle">
            @style/spinnerItemStyle
        </item>

        <!-- For each individual Spinner list item once clicked on -->
        <item name="android:spinnerDropDownItemStyle">
            @style/spinnerDropDownItemStyle
        </item>

    </style>

    <style name="spinnerItemStyle">
        <item name="android:textSize">23sp</item>
        <item name="android:textColor">#000000</item>
        <item name="android:background">#008080</item>
    </style>

    <style name="spinnerDropDownItemStyle">
        <item name="android:padding">5sp</item>
        <item name="android:textSize">25sp</item>
        <item name="android:textColor">#000000</item>
    </style>
    </resources>

我希望它会对你有所帮助!