我真的不明白如何创建一个9patch图像,但我发现了一个正在处理我的片段的图像。问题是边框外的颜色不是背景的颜色。我尝试将像素的颜色从图像更改为背景的颜色,但生成的图像不再起作用。 这是正在工作但颜色错误的图像:
http://i.stack.imgur.com/cJBfV.png
如何更改边框外像素的颜色,或者如何创建看起来像这样的新9patch图像?
答案 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补丁图片。
答案 2 :(得分:0)
九补丁是普通的png文件。任何能够显示九个补丁的软件对它们的解释都不同。换句话说,您可以使用任何png编辑器编辑它们。
还有一些专用工具(例如:在android sdk / tools / draw9patch中)以不同的大小显示结果。
那么他们如何解释?
九个补丁图像中的第一行和最后一行+第一列和最后一列像素仅包含黑色或透明像素(并且不显示那些第一行/最后一行/列)。
左边和上边缘的(交点)黑色像素定义了可伸缩区域。 (你可以有多个)
右边和底边的(交点)黑色像素定义内容区域。 (你只能有一个)