我怎样才能为9补丁图像着色?

Cha*_*ltz 4 android

我已经学会了如何通过添加OnTouchListener来对图像进行着色,其中我在图像上调用了setColorFilter.

我已经学会了如何使用九个补丁图像作为按钮和ImageButton的背景.

问题是,如果九路径图像是ImageButton的src,则它们不会拉伸,并且色调对背景图像没有影响.

如何按下九个补丁的ImageButton?有什么建议?

小智 7

我知道这是一个古老的问题,但它似乎是这个话题中唯一的问题.

您可以通过创建包含九个补丁节点和一个色调节点的xml资源文件来为九个补丁映像着色.示例:

<?xml version="1.0" encoding="utf-8"?>
<nine-patch xmlns:android="http://schemas.android.com/apk/res/android"
        android:src="@drawable/nine_patch_image"
        android:tint="@android:color/black"/>
Run Code Online (Sandbox Code Playgroud)

然后,您可以在后台属性中引用此文件:

<LinearLayout
    android:id="@+id/some_id"
    android:background="@drawable/xml_filename">
Run Code Online (Sandbox Code Playgroud)

希望这会对某人有所帮助


Kry*_*lez -1

我认为通过为每个按钮状态创建一个单独的资源,您会得到更好的结果。例如,您可以像这样创建一个可绘制的 xml 文件:

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/btn_pressed" 
        android:state_pressed="true" />
    <item android:drawable="@drawable/btn_focused"
        android:state_pressed="false"
        android:state_focused="true" />
    <item android:drawable="@drawable/btn_default"
        android:state_focused="false"
        android:state_pressed="false" />
</selector>
Run Code Online (Sandbox Code Playgroud)

然后为您的按钮创建一个样式,如下所示:

<style name="PushButton">
    <item name="android:background">@drawable/btn</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后您应该能够设置图像按钮的样式并将 src 设置为您想要的任何图像。

<ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@drawable/icon"
        style="@style/PushButton" />
Run Code Online (Sandbox Code Playgroud)