android - 如何将主题应用于 <PreferenceCategory> 的 <PreferenceScreen> 元素

标签 android preferenceactivity

我有一个扩展 PreferenceActivity 的 Activity 。

我的主题:android:theme="@android:style/Theme.Light.NoTitleBar.Fullscreen"应用到Manifest文件中的应用层。

除“PreferenceCategory”的“PreferenceScreen”元素外,一切都得到了所需的主题。他们仍然有默认的黑色背景。简而言之,具有父首选项屏幕的主首选项类别屏幕正在获取主题,但是如果我单击任何 PreferenceScreens 以转到其元素首选项(EditText 等),他们没有获取主题...

知道为什么会发生这种情况吗?

结构或 preferences.xml 是这样的:

<PreferenceCategory>

    <PreferenceScreen>
        <EditTextPreference>
        ...
        </EditTextPreference>
        <EditTextPreference>
        ...
        </EditTextPreference>
        ...
    </PreferenceScreen>

    <PreferenceScreen>
    ...
    </PreferenceScreen>

</PreferenceCategory>

最佳答案

最后我发现了如何以编程方式(通过 java 代码)更改“PreferenceActivity”的主题

改变主题就像这样:

        @Override
        public void onCreate(Bundle savedInstanceState) {
        setTheme(R.style.Holo_Theme_Light);
        super.onCreate(savedInstanceState);
        }

始终在 super.onCreate(savedInstanceState); 方法之前调用 setTheme(R.style.yourtheme); 方法。通过这样做,它会产生如下所示的结果。

enter image description here

就这些。

如果您在 super.onCreate(savedInstanceState); 方法之后调用 setTheme(R.style.yourtheme); 方法,它将产生如下所示的结果。

enter image description here

注意:嵌套的 PreferenceScreen 无法识别主题。要将主题应用于该嵌套的 PreferenceScreen,您必须为该嵌套的 PreferenceScreen 创建另一个 PreferenceActivity 并在那里调用 setTheme(R.style.yourtheme); 方法。

关于android - 如何将主题应用于 <PreferenceCategory> 的 <PreferenceScreen> 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10228482/

相关文章:

android - java.io.IOException : Unable to parse response from server at getFromLocationName() 异常

在屏幕旋转时重新创建 Android ViewModel

android - 找不到 ionic.config.json 文件

java - 为什么我在这里得到一个 ClassCastException?

android - 无法启动我的偏好 Activity

android - ExoPlayer 无法在使用 FFMPEG 的设备上播放音频

android - 如何在主机上部署 XMPP 服务器以与 Android 客户端一起使用?

java - 如何将焦点设置在 editText Preference 上并自动显示键盘?

Android SharedPreferences 没有改变

java - PreferenceActivity 中的工具栏设置