【发布时间】:2010-09-21 16:18:18
【问题描述】:
我尝试通过在按钮背景和按钮图标顶部放置一个半透明的 PNG 文件来实现悬停效果(按下按钮时的效果)。不幸的是,按钮背景文件是一个 9-PATCH-PNG,这在这里造成了一些麻烦:它“吞噬”了其图层顶部的所有内容,并且不允许覆盖 9-patch-png 的可拉伸区域(周围的细光线) . 换句话说,9 PATCH PNG 的顶部和左侧边缘的黑线不仅会导致拉伸,还会导致填充行为。
删除 9-Patch-Information 不是一个好的解决方案。
在这里你可以看到我的按钮。蓝色背景是 9 PATCH PNG。按钮周围的细线是不需要的。
这个图层列表被分配给按钮属性“背景”:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/home_btn_bg_blue_without_padding" />
<item>
<bitmap
android:src="@drawable/home_icon_test"
android:gravity="center" />
</item>
<item
android:drawable="@drawable/layer_black_50" />
</layer-list>
在每个边框上将图层的偏移量设置为“-1”是无效的。你们有什么建议吗?
更新
我尝试了以下操作,这应该避免缩放,来自here 的建议。但也没有用:
<!-- To avoid scaling, the following example uses a <bitmap> element with centered gravity: -->
<item>
<bitmap android:src="@drawable/image"
android:gravity="center" />
</item>
我的版本(9-patch-png 的可拉伸区域仍然未覆盖):
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:drawable="@drawable/home_btn_bg_blue_hover_without_padding" />
<item>
<bitmap
android:src="@drawable/home_icon_test"
android:gravity="center" />
</item>
<item>
<bitmap android:src="@drawable/layer_black_100"
android:height="100dp"
android:width="100dp"/></item>
</layer-list>
更新 2
这对我有用吗? Making Overlaid image transparent on touch in Android?
【问题讨论】:
-
让我做对了。第一张图就是想要的效果吧?
-
@Octavian:不,把“@drawable/layer_black...”放在最上面是想要的效果
-
您在顶部添加的关于“更新 2”的文本在问题列表中显示为问题的预览,从而不太可能有人大致了解您的内容'在他们浏览 Android 问题列表时询问,我猜他们不太可能想要点击并回答。
-
谢谢!删除它...
-
另一种方法:操纵drawable。 developer.android.com/resources/articles/… 也在这个视频的某个地方讨论过(总是值得一看)youtube.com/…
标签: android android-layout layer nine-patch