如何使用样式显示复选标记和Spinner选项?

时间:2016-12-12 22:38:02

标签: android android-layout android-spinner

我正在尝试在我的微调器中显示一个布尔选中标记以及每个选项。我试图在styles.xml中设置checkmark参数:

<resources>
    <style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:colorBackground">@color/backgroundColor</item>
        <item name="cardBackgroundColor">@color/cardBackgroundColor</item>
    </style>

    <style name="SpinnerTheme" parent="AppTheme">
        <item name="android:colorBackground">@color/background_material_dark_spinner</item>
        <item name="android:checkMark">?android:attr/listChoiceIndicatorSingle</item>
    </style> </resources>

这在我的Spinner中:

<Spinner
            android:theme="@style/SpinnerTheme"
            style="@style/SpinnerTheme"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/unitsSpinner"
            android:entries="@array/units_array"
            android:backgroundTint="@color/text_color_hint"
            />

但我的微调器选项看起来像this。 有没有办法解决这个问题?我想避免创建一个自定义视图只是为了解决这个问题。

3 个答案:

答案 0 :(得分:1)

我认为您必须创建自定义视图。如果您找到任何方式,请更新您的答案,如果您想创建它,请检查this

快乐的编码!

答案 1 :(得分:0)

尝试更改微调器的布局,而不是更改微调器的样式。如果您使用默认的Android布局,则尝试使用 android.R.layout.simple_list_item_single_choice 布局提供选择,如果您使用自定义布局,则可以根据使用情况使用复选框或单选按钮。

答案 2 :(得分:0)

解决!遵循以下步骤:

- 设置样式,如问题中所述,

- 使用自定义样式设置Spinner主题:

   <Spinner xmlns:android="http://schemas.android.com/apk/res/android"
    android:theme="@style/SpinnerTheme"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/productCountSpinner"
    />

- 在java代码中,使用布局资源simple_spinner_dropdown_item创建一个适配器,并将其设置为微调器:

ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_spinner_item, mContext.getResources().getStringArray(R.array.units_array));
spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mProductCountSpinner.setAdapter(spinnerArrayAdapter);

这是result