在可绘制图层列表中调整位图大小
Posted
技术标签:
【中文标题】在可绘制图层列表中调整位图大小【英文标题】:Resize bitmap inside a drawable layer-list 【发布时间】:2012-03-25 08:48:25 【问题描述】:目前我正在开发一个 android 应用程序。我想制作一个背景如下的文本(标题):
_______
/______/
我有以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:startColor="@color/jaarkleur"
android:centerColor="@color/jaarkleur"
android:endColor="#E66C2C00"
android:angle="0" />
<stroke android:
android:color="#ff000000"
/>
</shape>
</item>
<item>
<bitmap android:src="@drawable/overlay_left" android:gravity="left" />
</item>
<item>
<bitmap android:src="@drawable/overlay_right" android:gravity="right" />
</item>
</layer-list>
所以我把图像做成了一个透明的三角形,放在两端。
这适用于只有一行的标题,但是当标题占用两行时,它看起来像这样:
所以我的问题是:是否可以调整两个图像的大小以使其看起来正确? 谢谢!
【问题讨论】:
您是否考虑过使用 9 补丁? 是的,但我不想使用 9-patch,我想保留“内部”颜色变量。 【参考方案1】:我使用两个(半透明)代表角的图像解决了这个问题。
XML 如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:startColor="@color/jaarkleur"
android:centerColor="@color/jaarkleur"
android:endColor="#E66C2C00"
android:angle="0" />
<stroke android:
android:color="#ff000000"
/>
</shape>
</item>
<item>
<bitmap android:src="@drawable/overlay_left" android:gravity="left|top" />
</item>
<item>
<bitmap android:src="@drawable/overlay_right" android:gravity="right|bottom" />
</item>
</layer-list>
【讨论】:
你也可以使用android:gravity="right|fill_vertical"
和android:gravity="left|fill_vertical"
来垂直缩放你的左右位图【参考方案2】:
考虑使用NinePatchDrawable,而不是使用带有渐变/边框笔触和自定义图像的图层列表。
还有一个方便的 9-patch creater 随 android SDK 一起提供。
【讨论】:
之所以要使用渐变色是因为变量“jaarkleur”可以改变。修改这个变量然后制作一个全新的背景图像更容易。以上是关于在可绘制图层列表中调整位图大小的主要内容,如果未能解决你的问题,请参考以下文章