Android: 使用 9patch 在 imageview 周围创建一个框架
Android: Using 9patch to create a frame around an imageview
我一直在尝试使用木框图片在我的图像视图周围创建一个框架。我把 woodenframe 图片变成了 9patch,它仍然没有环绕在 imageview 上。
<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>
这就是 ninepatch,我希望它适合我选择的图片,无论大小如何。
编辑:
This is what i want.
你有两个选择。我推荐第一个。
第一个选项:
将每个图像视图放在单独的 LinearLayout 中,并将 9patch 应用于 LinearLayout 本身而不是图像视图
第二个选项:
使用或设置 Java 中图像视图的背景资源为 9patch 资源或 xml 中的背景属性为 9patch 资源,并将 src 设置为图像本身。
请注意,最好使用图层列表并添加两个形状的组合或其他任何东西,而不是使用 9patch 资源。
参考:
https://developer.android.com/guide/topics/resources/drawable-resource.html#LayerList
您上传的 "nine-patch" 帧图像不是正确的九补丁。
首先是一张jpg。扩展名应该是 .9.png
.
其次,内容不正确。具体来说:
- 您需要在整个图像周围有一个 1px 的透明边框。我在你的 jpg 中看不到这一点,尽管那只是将其导出为 jpg 的产物。
- 您需要通过在该 1 像素边框中绘制黑色像素来定义可拉伸区域。我在上传的图像中没有看到定义此类区域的黑色像素。
我强烈建议您回去阅读 nine-patch documentation again, and trying the draw 9-patch tool 以创建合适的九补丁。
您的 9-Patch 配置不正确。
仅仅重命名文件是不够的。为了让它正常工作,您必须定义某些区域,这些区域应该被拉伸以适合您的视图尺寸。
您还可以为该 9-Patch 定义填充以在将 9-Patch 应用到您的视图时插入内容。
android SDK 中有一个名为 "Draw 9-Patch" 的便捷工具可以帮助您定义这些区域:
http://developer.android.com/tools/help/draw9patch.html
要启动它,只需 运行
draw9patch.bat
位于
...\sdk\tools\
我一直在尝试使用木框图片在我的图像视图周围创建一个框架。我把 woodenframe 图片变成了 9patch,它仍然没有环绕在 imageview 上。
<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>
这就是 ninepatch,我希望它适合我选择的图片,无论大小如何。
编辑:
This is what i want.
你有两个选择。我推荐第一个。
第一个选项:
将每个图像视图放在单独的 LinearLayout 中,并将 9patch 应用于 LinearLayout 本身而不是图像视图
第二个选项:
使用或设置 Java 中图像视图的背景资源为 9patch 资源或 xml 中的背景属性为 9patch 资源,并将 src 设置为图像本身。
请注意,最好使用图层列表并添加两个形状的组合或其他任何东西,而不是使用 9patch 资源。
参考:
https://developer.android.com/guide/topics/resources/drawable-resource.html#LayerList
您上传的 "nine-patch" 帧图像不是正确的九补丁。
首先是一张jpg。扩展名应该是 .9.png
.
其次,内容不正确。具体来说:
- 您需要在整个图像周围有一个 1px 的透明边框。我在你的 jpg 中看不到这一点,尽管那只是将其导出为 jpg 的产物。
- 您需要通过在该 1 像素边框中绘制黑色像素来定义可拉伸区域。我在上传的图像中没有看到定义此类区域的黑色像素。
我强烈建议您回去阅读 nine-patch documentation again, and trying the draw 9-patch tool 以创建合适的九补丁。
您的 9-Patch 配置不正确。 仅仅重命名文件是不够的。为了让它正常工作,您必须定义某些区域,这些区域应该被拉伸以适合您的视图尺寸。 您还可以为该 9-Patch 定义填充以在将 9-Patch 应用到您的视图时插入内容。
android SDK 中有一个名为 "Draw 9-Patch" 的便捷工具可以帮助您定义这些区域:
http://developer.android.com/tools/help/draw9patch.html
要启动它,只需 运行
draw9patch.bat
位于
...\sdk\tools\