Подтвердить что ты не робот

Атрибут <size> не полезен при использовании списка слоев?

Учитывая, что у меня есть фон, пригодный для создания точек буфера для TextView, например:

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-решение, поскольку оно будет более гибким в будущем.

Пользовательский чертеж также не может быть и речи.

4b9b3361

Ответ 1

Тег

<size>, безусловно, работает в layer-list и для отображения точек маркера для текстовых просмотров вы можете использовать атрибут xml android:drawableLeft - > ссылка

При таком подходе нет необходимости в 9-патче и пользовательском чертеже.

Проводка кода и скриншот здесь для справки.

Рез/вытяжка/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>

Рез/макет/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> 

Как выглядит

Ответ 2

Это старый пост, но я думал, что добавлю что-то очень важное, чего не хватает на этом посту.

По моему опыту последним элементом <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>