Android:自定义形状(图层列表的行为)

Android:自定义形状(图层列表的行为),android,android-layout,shapes,Android,Android Layout,Shapes,我正在使用图层列表创建一个底部只有1dp边框的形状 我编写了一个用于创建形状的xml 除了小屏幕的手机外,这在所有手机上都能完美工作。在小屏幕尺寸下,边框不会显示。这是安卓系统的某种缺陷还是我做错了什么?我假设在小屏幕上1dp小于一个像素。尝试在android:bottom上使用2dp或1px。颜色值:#FFFFFF#eeeeee不是一个真正的答案,但我想我应该指出,使用这种方法画一条线在成本上是相当昂贵的。你可能会不止一次地画大面积,只是为了想象一条水平线。绝对正确。你能推荐一些其他

我正在使用图层列表创建一个底部只有1dp边框的形状

我编写了一个用于创建形状的xml



除了小屏幕的手机外,这在所有手机上都能完美工作。在小屏幕尺寸下,边框不会显示。这是安卓系统的某种缺陷还是我做错了什么?

我假设在小屏幕上1dp小于一个像素。尝试在android:bottom上使用2dp或1px。

颜色值:#FFFFFF#eeeeee不是一个真正的答案,但我想我应该指出,使用这种方法画一条线在成本上是相当昂贵的。你可能会不止一次地画大面积,只是为了想象一条水平线。绝对正确。你能推荐一些其他方法来达到同样的效果吗?最简单的方法是为不同的密度比创建一个9-patch;仅填充线条颜色,并使所有其他像素保持透明。您可以使用包含渐变的9面片,但更灵活的是在上面的
层绘制中使用它。另一个选项,我还没有亲自尝试过,可能是将构成“线”的
形状
元素替换为重力设置为底部的
位图
。只是不确定可用的平铺模式是否能够产生所需的效果(仅水平重复)。
<!-- Bottom Line -->

<item>

    <shape android:shape="rectangle" >

        <solid android:color="#CCCCCC" />
    </shape>
</item>

<item android:bottom="1dp">

    <shape android:shape="rectangle" >

        <gradient
            android:angle="270"
            android:endColor="@color/gradient_end"
            android:startColor="@color/gradient_start" />
    </shape>
</item>