我正在尝试设计一个 AlertDialog 来取悦客户。他们喜欢 Theme.Holo.Light.Dialog 上的蓝色标题栏,但喜欢另一个主题的绿色复选框。这就是我想要制作的:
所以,我有这样的风格定义:
<style name="MyDialogTheme" parent="@android:Theme.Holo.Light.Dialog">
<item name="android:listChoiceIndicatorMultiple">@drawable/checkbox_green</item>
</style>
<style name="mycheckbox" parent="@android:style/Widget.CompoundButton.CheckBox">
<item name="android:button">@drawable/checkbox_box</item>
</style>
我有一个 checkbox_green 的定义如下,它们只是 PNG 文件:
<item android:state_checked="false"
android:drawable="@drawable/checkbox_unchecked" />
<item android:state_checked="true"
android:drawable="@drawable/checkbox_checked"/>
</selector>
我用Java中的特定主题创建了我的对话框构建器,如下所示:
ContextThemeWrapper ctw = new ContextThemeWrapper( mContext, R.style.MyDialogTheme);
AlertDialog.Builder builder= new AlertDialog.Builder( ctw );
但我无法让对话框在此主题中显示绿色复选框而不是蓝色。我明白了:
我可以继续创建一个完整的布局,然后像这样使用它:
AlertDialog shareDialog = new AlertDialog.Builder(mContext).create();
LayoutInflater inflater = MainActivity.this.getLayoutInflater();
View dialogView = null;
dialogView = inflater.inflate(R.layout.share, (ViewGroup) getCurrentFocus());
shareDialog.setView(dialogView);
但这需要设置所有对话框的样式,而不仅仅是复选框。重新设置复选框的样式似乎要简单得多,但我无法做到这一点。
除了创建一个完整的布局并用于获取绿色复选框而不是蓝色复选框之外,我还需要做什么?