Android中的背景层列表和可缩放位图项

17

我有以下可绘制的背景集:

<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">

<item>
  <bitmap android:src="@drawable/base_bg"
    android:gravity="bottom" />
</item>
<item android:top="10dp" android:left="10dp">
  <bitmap android:src="@drawable/decoration1"
    android:gravity="top|right" 
    android:width="25dp" 
    android:height="25dp"  />
</item>
<item android:top="10dp" android:left="10dp">
  <bitmap android:src="@drawable/decoration2"
    android:gravity="top|right" 
    android:width="25dp" 
    android:height="25dp" 
    />
</item>
</layer-list>
它显示了所有的位图(base_bg, decoration1, 和 decoration2),但我找不到一种方法来修改它们的大小。我希望有一个主背景,在它上面放置装饰物,这些装饰物将根据dpi的不同而有不同的尺寸。是否有一种简单的方法来实现这个,或者我真的必须为不同的dpi制作一堆“装饰品”?这不太好,我想要缩放/调整大小选项!

android:widthandroid:height属性是我想要找到的东西,但我知道它不起作用。目前我正在使用不同版本的图片为不同的DPI提供支持,但希望能更加用户友好。

也许你应该考虑使用框架布局:这样你就可以单独修改每个视图。 - RichieHH
1个回答

13

我不知道这些图片是什么样子的,但是你可以制作一个大图像,并在一个item android:drawable字段中使用它,这样图片就会根据item的大小来显示。

<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">

<item>
  <bitmap android:src="@drawable/base_bg"
    android:gravity="bottom" />
</item>
<item android:top="10dp" android:left="10dp" android:drawable="@drawable/decoration1">
</item>
<item android:top="10dp" android:left="10dp" android:drawable="@drawable/decoration2">
</item>
</layer-list>

其他解决方案可以通过使用LayerDrawable (这里)和Drawable (这里)类来进行程序化处理。您可以使用3个Drawable对象构建Layer对象,然后使用setBounds(Rect)方法在每个Drawable对象上选择正确的大小。

希望这能帮助您。


layers[1].setBounds(4, 4, 4, 4); <- 不起作用 -.- - Martin Pfeffer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接