9 patch图像作为背景的问题

9
我有一个列表视图结构,其中使用交替的背景图片来区分奇偶元素。我尝试通过计算位置动态设置背景可绘制对象。当我使用普通位图时,它运行良好。但是,当我尝试使用九宫格图像时,界面就会崩溃,所有元素都会变形。我做错了什么?是否九宫格图像的创建方式存在问题,或者与普通位图相比使用九宫格图像的方法有所不同?
我的列表视图 XML 如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content" android:id="@+id/id01"
       android:background="@drawable/my_9patch_bg_image">
       <ImageView  />
       <RelativeLayout>
         <ImageView  />
          <TextView  />
          <TextView  />
       </RelativeLayout>
</RelativeLayout>

这里可能有解决方案可以用于我的问题。虽然我需要尝试,但它非常准确。


你的9-patch格式可能有问题了? - Dmitry Ryadnenko
我已经尝试过不同变体的9个patch图像,它们都提供了我想要的预览。但是,在特定的list view活动中,我的第一个RelativeLayout内部的内容消失了。正常位图图像可以很好地工作。 - Sharief Shaik
一个正在发生的屏幕截图,一个你想要发生的图像以及九宫格图片可能会帮助人们确定问题所在。 - ChrisJD
这个与代码示例相同的问题 :) - Pauli
4个回答

33

既然一年来都没有人回答你...我也遇到了同样的问题,你需要将padding设置为零(即使你不需要它)。

祝好运。


对我没用,9 patch 仍然显示为拉伸状态。 - Justin

0

你可以使用这个 XML 作为背景来展示卡片视图。

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:dither="true" android:shape="rectangle">
        <corners android:radius="2dp" />
        <solid android:color="#e2e2e2" />
    </shape>
</item>
<item android:bottom="2dp">
    <shape android:dither="true" android:shape="rectangle">
        <corners android:radius="2dp" />
        <solid android:color="@color/white" />
    </shape>
</item>


0

您可以像使用普通drawable一样使用Nine Patch。我猜您可能遇到了9 Patch本身的问题。在您的Android SDK的/tools目录中,有一个名为“draw 9 patch”的工具。它将帮助您纠正您的9 Patch drawable,并为视图的不同大小预览它。


我尝试使用draw9patch工具修复图像。尝试了不同的变化,但没有成功。如果图像应该在(+x,-y)方向上缩放,应该采用什么样的理想绘制方式? - Sharief Shaik

0

选择除了角落以外的所有边作为拉伸边缘


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接