Android偏好设置对话框样式

时间:2015-11-23 12:40:57

标签: android android-appcompat android-theme

我正在尝试在我的应用程序中联合对话框。所有活动都会延长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对话框保持不变

enter image description here

我尝试的另一件事是扩展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,所以我保留那些旧的对话框并等待支持库更新。我找到的一些有趣的链接是:

0 个答案:

没有答案