2

我正在尝试为我的 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 文件应始终位于屏幕底部,并始终按比例缩放以匹配屏幕尺寸。但是,使用上面的代码,我面临两个问题。

  1. PNG文件的透明背景是黑色的,而我希望它是白色的。
  2. PNG 文件大于屏幕宽度,因此我只能看到其中的一部分。它没有缩放以匹配屏幕的宽度。

我怎样才能完成这两件事,而无需编写 Java 代码?(虽然总比没有好......)

4

3 回答 3

1

问题 #1 可以用layer-listin解决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仍然存在......

于 2013-10-12T11:24:03.057 回答
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"/>
于 2018-01-17T07:33:03.687 回答
-1

实际上,使用layer-list可能会给您预期的缩放

默认情况下,所有可绘制项都会缩放以适应包含视图的大小。因此,将图像放在图层列表中的不同位置可能会增加视图的大小,并且某些图像会适当缩放。为了避免缩放列表中的项目,请使用<bitmap>元素内的<item>元素来指定可绘制对象并将重力定义为不缩放的东西,例如"center"

因此,以下可绘制对象将满足您的要求:

<?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>
于 2015-04-08T12:17:16.083 回答