Vik*_*ngh 5 android preferenceactivity
我有一个扩展PreferenceActivity的活动.
我的主题:android:theme ="@ android:style/Theme.Light.NoTitleBar.Fullscreen"应用于Manifest文件中的应用程序级别.
除了"PreferenceCategory"的"PreferenceScreen"元素之外,所有内容都获得了所需的主题.它们仍然具有默认的黑色背景.简单来说,具有父首选项屏幕的主要首选项类别屏幕正在获取主题,但如果我点击任何首选项屏幕以转到其元素首选项(EditText等等),它们就不会获得主题...
任何想法为什么会这样?
结构或preferences.xml是这样的:
<PreferenceCategory>
<PreferenceScreen>
<EditTextPreference>
...
</EditTextPreference>
<EditTextPreference>
...
</EditTextPreference>
...
</PreferenceScreen>
<PreferenceScreen>
...
</PreferenceScreen>
</PreferenceCategory>
Run Code Online (Sandbox Code Playgroud)
最后我发现了如何以编程方式更改主题"PreferenceActivity"(通过java代码)
要更改主题,请执行以下操作:
@Override
public void onCreate(Bundle savedInstanceState) {
setTheme(R.style.Holo_Theme_Light);
super.onCreate(savedInstanceState);
}
Run Code Online (Sandbox Code Playgroud)
始终在setTheme(R.style.yourtheme);方法之前调用super.onCreate(savedInstanceState);方法.通过这样做,它将产生如下所示的结果.

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

注意:嵌套的PreferenceScreen无法识别主题.要将主题应用于嵌套的PreferenceScreen,您必须为该嵌套的PreferenceScreen和调用setTheme(R.style.yourtheme);方法创建另一个PreferenceActivity .
这是早期 Android 版本中的一个错误(另请参阅http://code.google.com/p/android/issues/detail?id=4611)。
如果我没记错的话,主题并未正确应用于所有 Android 2.x 版本上的 PreferenceActivity。解决此问题的一种方法是自己设置调整颜色/字体等,但错误报告的注释中还描述了一种解决方法。主题应该在 Android 3.0 及更高版本上正常工作。
| 归档时间: |
|
| 查看次数: |
12409 次 |
| 最近记录: |