我正在尝试在我的应用程序中联合对话框。所有活动都会延长AppCompatActivity
,因此对话框很重要,但我的设置活动中的DialogPreference
除外。
我使用的是PreferenceActivity
,但我也使用AppCompatActivity
将其更改为PreferenceFragment
。它没有任何区别。
所以我尝试为我的SettingsTheme添加自定义样式,就像这样
<style name="SettingsTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:dialogPreferenceStyle">@style/StyledDialog</item>
</style>
<style name="StyledDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
</style>
但我得到的一切都是这个(我也尝试过alertDialogStyle,alertDialogTheme和dialogTheme),holo对话框保持不变
我尝试的另一件事是扩展EditTextPreference
并覆盖onPrepareDialogBuilder
强制我的主题:
@Override
protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
super.onPrepareDialogBuilder(builder);
builder.getContext().setTheme(R.style.StyledDialog);
}
也没有成功。有没有办法在一个应用程序中的对话框是AppCompat联合而不是每个都不同?我认为平台应该解决这个问题,但是,我忘记了我在Android上。
修改:经过一番挖掘后,我发现DialogPreference
使用android.app.AlertDialog
代替android.support.v7.app.AlertDialog
。所以看起来我必须找到一种方法来覆盖DialogPreference
中的Builder。
编辑2:好的,所以关于上一次编辑 - 我一直在使用不支持的DialogPreference,所以在添加com.android.support:preference-v7:23.1.0
后我可以访问另一个类集。但它看起来仍然有些错误和一点点hacky,所以我保留那些旧的对话框并等待支持库更新。我找到的一些有趣的链接是: