如何在活动主题/样式中使用背景图像?
如果我使用颜色这样做:
<style name="CustomTheme" parent="android:Theme.Light">
<item name="android:windowBackground">@color/custom_theme_color</item>
</style>
它工作正常,但如果我用以下代码替换:
<item name="android:windowBackground">@drawable/splash_image</item>
图像显示正确,但所有内容都被压缩到屏幕左上角的一个小块中。状态栏下方的阴影也会被切断或混乱。
我正在使用Mono for Android,图像是一个有效的九补丁png。
我也不使用主题,所以在我要添加的活动的布局中
android:background="@drawable/splash_image"
我不使用主题或任何东西,所以我不确定这将如何影响这一点,但我设置我的背景如下:
getWindow().setBackgroundDrawableResource(R.drawable.background_image);
在onCreate
我的解决方案是将android:windowBackground更改为android:background。
<?xml version="1.0" encoding="UTF-8" ?>
<resources>
<style name="Theme.Splash" parent="android:Theme">
<item name="android:background">@drawable/splash</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
我需要一个看起来像我的应用程序初始活动的启动图像并遇到同样的问题。我很幸运使用windowContentOverlay而不是windowBackground。 drawable出现在状态栏下方,与真实布局完全相同。它适用于Android 2.2,Android 3.0和Android 4.1。
这是我的风格:
<style name="SplashTheme" parent="android:style/Theme.Light">
<item name="android:windowNoTitle">true</item>
<item name="android:windowContentOverlay">@drawable/splash</item>
</style>
我的splash.xml drawable使用layer-list模仿我的用户界面标题:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!--- Background; tile is broken on Android 2.2 so just have super wide background that will get clipped -->
<item>
<bitmap android:gravity="top|left" android:src="@drawable/splash_background" />
</item>
<!--- Icon left justified -->
<item>
<bitmap android:gravity="top|left" android:src="@drawable/header_icon" />
</item>
<!--- Buttons/etc right justified -->
<item>
<bitmap android:gravity="top|right" android:src="@drawable/splash_buttons" />
</item>
</layer-list>
如果您的应用使用它,我相信ActionBar还有一些内置的方法可以解决这个问题。 MonoIO sample似乎有这样的发射图像。
您可以使用android:gravity="fill"
而不是android:gravity="center"
,
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="translucent">
<item>
<bitmap
android:gravity="fill"
android:src="@drawable/splash_screen" />
</item>
</layer-list>
注意:这取决于您的飞溅图像的形状和大小。在我的情况下,通过使用android:gravity="fill"
我的飞溅看起来很完美。您可以在启动图像的类型上使用不同的重力属性。