使用MultiChoiceItems更改AlertDialog的复选框颜色

时间:2019-06-03 04:08:37

标签: android alertdialog android-styles android-checkbox

我正在尝试通过 MultiChoiceItems

更改AlertDialog的颜色

Java:

   private void displayMultiSelectDialog() {
        emoji = getResources().getStringArray(R.array.photo_editor_emoji);
        boolean[] checkedItems = new boolean[emoji.length];
        AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this, R.style.DialogTheme);
        dialogBuilder.setTitle("Select Emoji");
        dialogBuilder.setMultiChoiceItems(convertListEmoji(emoji), checkedItems,
                (dialogInterface, which, isSelected) -> {
                    if (isSelected) {
                        selectedEmoji.add(emoji[which]);
                    } else {
                        selectedEmoji.remove(emoji[which]);
                    }
                }
        );
        dialogBuilder.setPositiveButton("Done", (dialog, which) -> showSelectedColors());
        dialogBuilder.create().show();
    }

XML:

   <style name="DialogTheme">
        <item name="android:background">#000</item>
        <item name="android:textColor">#586eea</item>
        <item name="android:textSize">18sp</item>
        <item name="android:textColorPrimary">#586eea</item>
        <item name="android:colorAccent" tools:targetApi="lollipop">#586eea</item>
    </style>

但是我的AlertDialog背景存在问题,它为黑色,因此复选框项看起来不可见

enter image description here

如何使复选框如下所示:

enter image description here

在此先感谢

2 个答案:

答案 0 :(得分:0)

尝试将自定义主题设置为您的复选框。

在您的 styles.xml

中添加样式
<style name="MyCheckBox" parent="Theme.AppCompat.NoActionBar">
    <item name="colorControlNormal">#000</item>   <!-- normal border color  -->
    <item name="colorControlActivated">#000</item> <!-- activated color  -->
    <item name="android:textColor">#FFFF3F3C</item> <!-- text color -->
</style>

,然后将此样式设置为复选框的主题,如下所示:

<CheckBox android:id="@+id/check_agree"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:layout_margin="10dp"
          android:text="I agree"
          android:theme="@style/MyCheckBox"/>   <!-- here apply your checkbox style -->

答案 1 :(得分:0)

mouse.Listener

minSdkVersion是21岁以上,请使用android:buttonTint属性更新复选框的颜色: