我有一个扩展 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);
方法。通过这样做,它会产生如下所示的结果。
就这些。
如果您在 super.onCreate(savedInstanceState);
方法之后调用 setTheme(R.style.yourtheme);
方法,它将产生如下所示的结果。
注意:嵌套的 PreferenceScreen 无法识别主题。要将主题应用于该嵌套的 PreferenceScreen,您必须为该嵌套的 PreferenceScreen 创建另一个 PreferenceActivity 并在那里调用 setTheme(R.style.yourtheme);
方法。
关于android - 如何将主题应用于 <PreferenceCategory> 的 <PreferenceScreen> 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10228482/