我正在设置我的偏好活动的背景,所以我在styles.xml中写了一个样式
<style
name="PreferencesTheme"
parent="@android:style/Theme.Light.NoTitleBar.Fullscreen">
<item name="android:windowBackground">@drawable/background</item>
</style>
并在活动中
<activity
android:name="com.phonelight.realparrot.MainActivity"
android:label="Real Parrot"
android:screenOrientation="portrait"
android:theme="@style/PreferencesTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
我在两个设备的模拟器上运行它。第一个是手机,第二个是平板电脑。
为什么平板电脑上不显示背景图像。只有很小的差距。我在真正的平板电脑上运行它,整个屏幕也是白色的。
答案 0 :(得分:0)
我想你想要使用不同的主题。我不确定为什么两者之间存在差异,但我怀疑API的细微差别。
<style
name="PreferencesTheme"
parent="@android:style/Theme.Translucent.NoTitleBar.Fullscreen">
<item name="android:windowBackground">@drawable/background</item>
</style>
答案 1 :(得分:0)
我通过添加偏好活动
来解决问题preference.setBackgroundResource(R.xml.background);
答案 2 :(得分:0)
我偶然发现了平板电脑的这个问题,但是yasserbn的答案并没有帮助我,也就是说没有什么迹象......
preference.setBackgroundResource(R.xml.background);
......正在接受调查。
在Android大屏幕上,PreferenceActivity重新启动以显示片段中的首选项。出现这个问题是因为我们无法更改此片段容器的背景,因为它的布局ID com.android.internal.R.id.prefs_frame是私有的。
解决方法是以递归方式清除所有子视图的背景,因为我们始终可以获得根视图:
@Override
protected void onCreate(Bundle savedInstanceState) {
ThemeManager.setTheme(this);
super.onCreate(savedInstanceState);
clearBackground(findViewById(android.R.id.content));
// other stuff...
}
private void clearBackground(View view) {
view.setBackgroundResource(0);
if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
for (int i = 0; i < viewGroup.getChildCount(); i++)
clearBackground(viewGroup.getChildAt(i));
}
}
这并不完美,即如果您的任何偏好使用带有背景的自定义视图,尽管这种情况不太可能。