使用layer-list?</size>时,<size>属性无用

时间:2011-06-28 05:30:39

标签: android

鉴于我有一个背景可绘制为TextViews创建这样的项目:

Example of what I want

然后我的XML代码如下所示:

<?xml version="1.0" encoding="utf-8"?>

<layer-list
        xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:right="235dp">
        <shape android:shape="oval">
            <padding android:left="10dp" />
            <size android:height="5dp" android:width="5dp"/>
            <solid android:color="@color/my_pink"/>
        </shape>
    </item>
    <item android:left="10dp">
        <shape android:shape="rectangle">
            <solid android:color="#ffffff"/>
            <padding android:left="10dp" />
        </shape>
    </item>
</layer-list>

但是一旦我使用上面显示的代码,我的子弹点看起来像这样:

Result of the XML shown above

似乎<size>标签完全被忽略。

你会如何解决这个问题?使用9patch,是的,我知道..也许这是最容易做到的......但实际上我希望找到一个XML解决方案,因为它在未来会更灵活。

自定义绘图也是不可能的。

2 个答案:

答案 0 :(得分:6)

<size>标记肯定适用于layer-list 并显示textview的项目符号,您可以使用xml属性android:drawableLeft - &GT; link

使用这种方法,不需要9补丁和自定义绘图。

发布代码&amp;这里有截图供参考。

<强> RES /抽拉/ bullet_point_layer.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:right="3dp">
    <shape android:shape="oval">
        <padding android:left="10dp" />
        <size android:height="10dp" android:width="10dp"/>
        <solid android:color="#ff0080"/>
    </shape>
</item>

<强> RES /布局/ main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView one"
    android:textColor="@android:color/black"
    android:drawableLeft="@drawable/bullet_point_layer"
    android:background="@android:color/white" />
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="TextView Two"
    android:textColor="@android:color/black"
    android:drawableLeft="@drawable/bullet_point_layer"
    android:background="@android:color/white" />

</LinearLayout> 

外观如何

答案 1 :(得分:5)

这是一篇很老的帖子,但我想我会在这篇文章中添加一些非常重要的内容。

根据我的经验,<layer-list>的最后一项将是取大小值的项目。

所以在这个例子中我创建了一个两行分隔线。我在末尾指定一个空项目来指定分隔符可绘制高度。

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#535353" />
        </shape>
    </item>

    <item android:top="@dimen/common_divider_line_half_size">
        <shape android:shape="rectangle">
            <solid android:color="#737373" />
        </shape>
    </item>

    <!-- Last item empty to specify divider height -->
    <item>
        <shape android:shape="rectangle">
            <size android:height="@dimen/common_divider_line_size"/>
            <solid android:color="@android:color/transparent" />
        </shape>
    </item>
</layer-list>