Атрибут <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-решение, поскольку оно будет более гибким в будущем.
Пользовательский чертеж также не может быть и речи.
Ответы
Ответ 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>