使用图层列表时,<size>属性无用吗?

Seb*_*oth 15 android

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

我想要的例子

然后我的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>
Run Code Online (Sandbox Code Playgroud)

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

上面显示的XML的结果

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

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

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

Vij*_*y C 6

<size>标签肯定适用于layer-list 并显示textview的要点,您可以使用xml属性android:drawableLeft - > 链接

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

在此处发布代码和屏幕截图以供参考.

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>
Run Code Online (Sandbox Code Playgroud)

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> 
Run Code Online (Sandbox Code Playgroud)

看起来如何


Jon*_*ona 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>
Run Code Online (Sandbox Code Playgroud)