Android:使用9patch在imageview周围创建一个框架

时间:2015-07-30 20:26:49

标签: android imageview nine-patch

我一直在尝试使用木框图片在我的imageview周围创建一个框架。我把木框图片变成了9patch,它仍然没有环绕图像视图。

<RelativeLayout
    android:id="@+id/ChosenPic"
    android:layout_width="match_parent"
    android:layout_height="50dp"
    android:layout_weight="3"
    android:orientation="vertical"
    android:padding="10dp" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:baselineAlignBottom="true"
        android:src="@drawable/ic_launcher" />

    <ImageView
        android:id="@+id/ImageView02"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="fill_vertical|fill_horizontal"
        android:scaleType="fitXY"
        android:src="@drawable/woodenframe" >
    </ImageView>
</RelativeLayout>

enter image description here

所以这就是九点,我想让它适合我选择的图片,无论大小。

编辑:

This is what i want

3 个答案:

答案 0 :(得分:1)

您有两种选择。我推荐了第一个。

第一个选项:
将每个图像视图放在单独的LinearLayout中,并将9patch应用于LinearLayout,而不是图像视图

第二个选项:
使用或将Java中的图像视图的背景资源设置为9patch资源,或者将xml中的background attr设置为9补丁资源,将src设置为自己的映像。

请注意,最好使用图层列表并添加两种形状或其他形状的组合,而不是使用9patch资源。

参考:
https://developer.android.com/guide/topics/resources/drawable-resource.html#LayerList

答案 1 :(得分:0)

您上传的“九补丁”帧图像不是合适的九补丁。

首先,它是一个jpg。扩展名应为.9.png

其次,内容不正确。具体做法是:

  • 您需要在整个图像周围使用1px透明边框。我没有在你的jpg中看到这一点,尽管这只是将其作为jpg导出的工件。
  • 您需要通过在该1px边框中绘制黑色像素来定义可伸展区域。我看到在上传的图片中没有定义这样一个区域的黑色像素。

我强烈建议您再次阅读nine-patch文档,并尝试使用the draw 9-patch tool创建正确的9补丁。

答案 2 :(得分:0)

您的9-Patch配置不正确。 仅仅重命名文件是不够的。要使其正常工作,您必须定义应拉伸的某些区域以适合视图的尺寸。 您还可以为该9-Patch定义填充,以便在将9-Patch应用到视图时插入内容。

有一个方便的工具,名为&#34; Draw 9-Patch&#34;在android SDK中,它可以帮助您定义这些区域:

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

要启动它,只需运行

即可
draw9patch.bat 

位于

...\sdk\tools\