Android:NinePatch和LayerList

时间:2012-06-20 08:41:00

标签: android overlay nine-patch

所以我正在尝试使用图层列表覆盖透明的九层Drawable地图图像。像这样:

target http://f.cl.ly/items/2b1x3c3o0w3t1z0b2o2s/Screen%20Shot%202012-06-20%20at%2010.34.18%20AM.png

但我得到的就是这个(注意地图图像是由九个边缘的边缘裁剪的,即使它应该是透明的):

problem http://f.cl.ly/items/380j3E2w452Y2D2d1K0a/Screen%20Shot%202012-06-20%20at%2010.29.45%20AM.png

这是我的图层列表代码:

<?xml version="1.0" encoding="utf-8"?>
  <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
      <nine-patch android:src="@drawable/myninepatch" />
    </item>
    <item android:drawable="@drawable/detail_map"/>
  </layer-list>

这是我的布局ImageView:

    <ImageView
        android:layout_width="298dp"
        android:layout_height="106dp"
        android:layout_gravity="center"
        android:layout_marginBottom="11dp"
        android:src="@drawable/detail_map_overlay" />

修改:这是九个补丁.png:

ninepatch http://f.cl.ly/items/0X3N0d331Q15380D093n/myninepatch.9.png

任何想法如何实现这一目标?不一定使用ninepatch但我想根据图像的大小使其可伸缩。或者如果你知道如何做内心发光,那也会膨胀。

1 个答案:

答案 0 :(得分:3)

重温评论并使其更清晰,以便进一步阅读

你9补丁无效:

  • 顶部和左侧部分仅定义可伸展区域。
  • 底部和右侧,内容的位置。

通过你的例子,它会做这样的事情(基于你但没有无用的部分):

9 patch corrected

然后将其设置为ImageView的背景:

<ImageView
    android:layout_width="298dp"
    android:layout_height="106dp"
    android:layout_gravity="center"
    android:layout_marginBottom="11dp"
    android:src="@drawable/detail_map"
    android:background="@drawable/myninepatch">
</ImageView>

像这样你可以摆脱图层列表