如何在alertDialog

时间:2015-10-27 21:42:14

标签: android dialog radio-button themes

我正在开发一个Android应用程序,我希望在AlertDialogs中更改RadioButton的颜色。我希望那些RadioButtons能够匹配我的应用主题。

所以我猜我应该找一个Android属性来定义我的RadioButtons的drawable并在我的主题中修改它。

首先我发现AlertDialog使用CheckedTextView来显示RadioButton。在布局select_dialog_singlechoice_holo.xml中我发现了这个:

<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    ...
    android:checkMark="?android:attr/listChoiceIndicatorSingle"
    ...
/>

然后我去了themes.xml并查看了Holo.Light主题以找到这个:

<item name="listChoiceIndicatorSingle">@android:drawable/btn_radio_holo_light</item>

所以在我的主题中我将后者改为:

<style name="GreenTheme" parent="@android:style/Theme.Holo.Light" >

    <item name="android:listChoiceIndicatorSingle">@drawable/green_radio_button</item>

</style>

不幸的是什么也没发生。

我错过了什么?

1 个答案:

答案 0 :(得分:2)

我找到了解决方法。似乎alertDialog以某种方式覆盖了listChoiceIndicatorSingle属性。所以我的解决方案是在创建选项时添加一个ArrayAdapter,从而覆盖alertDialog将使用的布局。

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
String[] items= getResources().getStringArray(choices);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(getActivity(), android.R.layout.select_dialog_singlechoice, items);

builder.setSingleChoiceItems(adapter, checkedItem, listener);