我正在尝试为我的Android应用程序设置全局背景图像。该图像是具有透明度的PNG文件。我按以下方式设置它:
<style name="MyAppTheme" parent="@style/Theme.AppCompat">
<item name="android:windowBackground">@drawable/background_main</item>
</style>
drawable/background_main.xml
:
<?xml version="1.0" encoding="utf-8"?>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/background_main_bitmap"
android:gravity="bottom|center_horizontal" />
我的PNG文件应始终位于屏幕底部,并且会缩放以始终与屏幕尺寸相匹配。但是,使用上面的代码,我遇到了两个问题。
如何在不编写Java代码的情况下完成这两件事? (虽然它会比没有好......)
答案 0 :(得分:1)
问题#1可以通过layer-list
中的drawable/background_main.xml
来解决:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#ffffff"/>
</shape>
</item>
<item>
<bitmap
xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/background_main_bitmap"
android:gravity="bottom|center_horizontal|fill_horizontal" />
</item>
</layer-list>
问题#2仍然存在......
答案 1 :(得分:0)
只需更改android:gravity
的属性,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/flush"
android:gravity="fill_horizontal|fill_vertical"/>
答案 2 :(得分:-1)
实际上,使用layer-list
可能会给您预期的scaling:
默认情况下,所有可绘制项目都会缩放以适合包含视图的大小。因此,将图像放置在不同位置的图层列表中可能会增加视图的大小,并且某些图像会根据需要进行缩放。要避免缩放列表中的项目,请使用
<bitmap>
元素中的<item>
元素指定drawable,并将重力定义为不可缩放的元素,例如"center"
因此,以下drawable将适合您的要求:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<item android:drawable="@drawable/background_main_bitmap" />
</layer-list>