如何修改Android 9patch图像的颜色?

时间:2015-05-30 21:24:17

标签: android android-studio

我真的不明白如何创建一个9patch图像,但我发现了一个正在处理我的片段的图像。问题是边框外的颜色不是背景的颜色。我尝试将像素的颜色从图像更改为背景的颜色,但生成的图像不再起作用。 这是正在工作但颜色错误的图像:

http://i.stack.imgur.com/cJBfV.png

如何更改边框外像素的颜色,或者如何创建看起来像这样的新9patch图像?

3 个答案:

答案 0 :(得分:8)

您可以将DrawableCompat与supprot v4一起使用。

现在,我将通过此方法显示更改Toast颜色。如你所知,吐司背景是一个名为toast_frame.9.png的9patch Drawable(你可以在你的sdk目录中找到它)

此代码:

    Toast toast = Toast.makeText(this, content, Toast.LENGTH_SHORT);
    toastView.findViewById(android.R.id.message);
    View toastView = toast.getView();
    Drawable toastBg = toastView.getBackground();
    Drawable drawable = tintDrawable(toastBg, ColorStateList.valueOf(Color.RED));
    toastView.setBackground(drawable);
    toast.setView(toastView);
    toast.show();

public  Drawable tintDrawable(Drawable drawable, ColorStateList colors) {
    final Drawable wrappedDrawable = DrawableCompat.wrap(drawable);
    DrawableCompat.setTintList(wrappedDrawable, colors);
    return wrappedDrawable;
}

如果您想了解更多信息,请点击:http://www.race604.com/tint-drawable/

答案 1 :(得分:2)

您可以使用随Android SDK提供的Draw 9-patch工具编辑9补丁。但是,由于您的图像已包含9个贴片可伸缩区域,您只需在图像编辑器中编辑颜色,例如GIMP或Photoshop。确保您重命名图片以使用.9.png扩展名,以便将其识别为9补丁图片。

http://developer.android.com/tools/help/draw9patch.html

答案 2 :(得分:0)

九补丁是普通的png文件。任何能够显示九个补丁的软件对它们的解释都不同。换句话说,您可以使用任何png编辑器编辑它们。

还有一些专用工具(例如:在android sdk / tools / draw9patch中)以不同的大小显示结果。

那么他们如何解释?

九个补丁图像中的第一行和最后一行+第一列和最后一列像素仅包含黑色或透明像素(并且不显示那些第一行/最后一行/列)。

左边和上边缘的(交点)黑色像素定义了可伸缩区域。 (你可以有多个)

右边和底边的(交点)黑色像素定义内容区域。 (你只能有一个)