Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/210.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-使用png文件代替图层列表中的形状_Android_Xml_View_Android Ui - Fatal编程技术网

Android-使用png文件代替图层列表中的形状

Android-使用png文件代替图层列表中的形状,android,xml,view,android-ui,Android,Xml,View,Android Ui,我想使用一个特定的png文件作为我的形状,而不是像椭圆形,矩形,直线等预定义的文件。这是可能的。。以下是我的图层列表xml文件: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item android:bottom="-2dp" android:r

我想使用一个特定的png文件作为我的形状,而不是像椭圆形,矩形,直线等预定义的文件。这是可能的。。以下是我的图层列表xml文件:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:bottom="-2dp"
        android:right="-1dp"
        android:top="-2dp">
        <shape android:shape="oval"
            >
            <solid android:color="@android:color/transparent" />

            <stroke
                android:dashGap="2dp"
                android:dashWidth="1dp"
                android:width="1dp"
                android:color="@color/alert_inner_color" />
            <size
                android:height="33dp" android:width="2dp"
                />
        </shape>
    </item>

</layer-list>


看看它是如何迫使我使用椭圆的。我有我自己的png,我想用它来创建一个分隔符。我的最终目标是创建一个可用于操作视图的分隔器。我的png文件是一个单点。检查这张图片,最后一列是我想要结束的,但高度只有35dp:

根据您的描述和您对@pskink的评论,您想要使用的是一个9-patch。有关XML详细信息,请参见此文档。这是大多数框架UI层/状态列表可绘制项等使用的


更新编辑:根据评论讨论,上述9-补丁信息将不起作用。实际上没有一种机制可以用来反复重复相同的“点”图像,所以你必须创建一个。您可以创建自己的
RepeatingPicturedRavable
类,该类扩展
PicturedRavable
(或事件
Drawable
)并重写
draw()
方法来绘制重复点图像。我建议添加自定义属性来指定图像是垂直还是水平重复。使用这种机制,你可以让你的应用程序只包含一个“点”图像,并在运行时进行适当缩放。

因此,不要使用形状标记,而是使用位图标记,这是你想要的吗?关闭我尝试了你的方法,但我不太清楚。我的最终目标是,我有一个很小的png文件,其中包含一个很小的点。我想做一个35dp高的垂直分离器,重复这些点。所以点从北开始,向南重复,高度为35dp。你能告诉我使用9补丁的代码是什么样子吗?你需要修改后的XML(参见我提供的链接)以及更新后的9补丁格式的PNG文件。有关格式的详细信息,请参阅和。我认为这不是我需要的。最终结果应该是这样的。我感谢任何进一步的反馈。我只是想找一个单点(比如说它是一个9块)并让它垂直重复以形成一个分割线。9块可以很好地实现这一点,这是推荐的方法。您的9面片文件将是9x9像素,中心像素是您希望的“点”颜色,黑点位于(0,1)和(1,0)x和y坐标。将其设置为视图的背景资源。将宽度设置为1dp,将高度设置为“match_parent”或任何您想要的尺寸,系统将自动垂直“拉伸”1点PNG图像。有趣的是,问题是我不需要拉伸点,我希望垂直重复点。所以分割线会像这样点着“……但是垂直的。这能做到吗?我想象它只是将一个点延伸到容器上。