如何从多个图像中制作绘图?

how*_*ttl 17 android xml-drawable

我有三个9补丁PNG,它们组成了按钮的背景(左侧,中间,右侧).我想将这三个图像组合在一个drawable中,我可以将其指定为XML中按钮的背景,类似于:

res/drawable/button_background.xml:

<?xml version="1.0" encoding="utf-8"?>
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/button_left_side" />

<nine-patch android:src="@drawable/button_middle" />

<nine-patch android:src="@drawable/button_right_side" />
Run Code Online (Sandbox Code Playgroud)

res/layout/main.xml:

<button android:background="@drawable/button_background" />
Run Code Online (Sandbox Code Playgroud)

这可能吗?

how*_*ttl 39

经过一些反复试验,我能够以令人满意的方式解决问题.我只是实现了一个Layer-List drawable,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/btn_left" android:left="0px" />
    <item android:drawable="@drawable/btn_middle" 
        android:left="26px" android:right="26px" />
    <item android:drawable="@drawable/btn_right" android:right="0px" />
</layer-list>
Run Code Online (Sandbox Code Playgroud)

其中26px值是两个按钮侧图像的宽度(以像素为单位).

要使用这个drawable,只需像任何其他drawable一样调用它:

<bitmap android:src="@drawable/button_background" />
Run Code Online (Sandbox Code Playgroud)

这与您期望的完全一致,中间正常扩展以适合所需的宽度,并且所有三个图像都扩展以适合所需的高度.我希望其他人可以从中受益!

  • 如果使用"dp"代替"px",它会产生更好的结果.使用px将导致高密度设备中的左右最多按钮非常小. (3认同)