У меня есть такой код:
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/cashItemsList"
android:cacheColorHint="#00000000"
android:divider="@drawable/list_divider"></ListView>
где @drawable/list_divider
находится:
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
android:width="1dp"
android:color="#8F8F8F"
android:dashWidth="1dp"
android:dashGap="1dp" />
</shape>
но я не вижу разделителя.
Ответы:
Ребята, вот почему вы должны использовать 1px вместо 1dp или 1dip: если вы укажете 1dp или 1dip, Android уменьшит его. На устройстве с разрешением 120 точек на дюйм это переводится примерно как 0,75 пикселя, что округляется до 0. На некоторых устройствах это переводится в 2-3 пикселя и обычно выглядит некрасиво или неаккуратно.
Для разделителей высота 1 пиксель является правильной, если вы хотите разделитель в 1 пиксель, и является одним из исключений из правила «все должно быть наклонено». На всех экранах будет 1 пиксель. Кроме того, 1px обычно лучше смотрится на экранах hdpi и выше.
Правка «Это больше не 2012 год»: возможно, вам придется переключиться на dp / dip, начиная с определенной плотности экрана.
источник
Это обходной путь, но он работает для меня:
Создан файл res / drawable / diverr.xml следующим образом:
А в styles.xml для элемента listview я добавил следующие строки:
Важнейшей частью было включение этой настройки 1px. Конечно, drawable использует градиент (с 1 пикселем), и это не оптимальное решение. Я пробовал использовать инсульт, но не получилось. (Кажется, вы не используете стили, поэтому просто добавьте атрибут android: dividerHeight = "1px" для ListView.
источник
Добавьте
android:dividerHeight="1px"
и все заработает:источник
Проблема, с которой вы сталкиваетесь, проистекает из того факта, что вам не хватает android: dividerHeight, который вам нужен, и того факта, что вы пытаетесь указать вес линии в своем чертеже, что вы не можете сделать с разделителями для некоторых странная причина. По сути, чтобы ваш пример заработал, вы можете сделать что-то вроде следующего:
Создайте свой объект для рисования как прямоугольник или линию, либо работает, вы просто не можете попытаться установить на нем какие-либо размеры, поэтому либо:
ИЛИ:
Затем создайте собственный стиль (просто предпочтение, но мне нравится иметь возможность повторно использовать материал)
Наконец, объявите представление списка, используя пользовательский стиль:
Я предполагаю, что вы знаете, как использовать эти фрагменты, если не дайте мне знать. В основном ответ на ваш вопрос заключается в том, что вы не можете установить толщину разделителя в чертеже, вы должны оставить ширину undefined и использовать android: dividerHeight, чтобы установить ее вместо этого.
источник
Из документа:
Похоже, он
setDividerHeight()
должен быть вызван, чтобы разделитель появился, если у него нет собственной высоты.источник
Вы
@drawable/list_divide
должны выглядеть так:В своей версии вы указываете
android:width="1dp"
, просто измените его на,android:height="1dp"
и он должен работать!источник
Из документа :
в основном вам нужно поместить файл с именем
list_divider.xml
in,res/drawable/
чтобы вы могли получить к нему доступ какR.drawable.list_divider
; если вы можете получить к нему доступ таким образом, вы можете использоватьandroid:divider="@drawable/list_divider"
в XML дляListView
.источник
Некоторые люди могут видеть сплошную линию. Я обошел это, добавив
android:layerType="software"
к представлению ссылку на drawable.источник
Документы Android предупреждают о том, что что-то исчезает из-за ошибки округления ... Возможно, попробуйте dp вместо px, и, возможно, сначала попробуйте> 1, чтобы увидеть, является ли это проблемой округления.
см. http://developer.android.com/guide/practices/screens_support.html#testing
для раздела «Изображения с высотой / шириной 1 пиксель»
источник
Я была такая же проблема. Однако на моем оригинальном Nexus 7 настройка вида 1px, похоже, не работала. Я заметил, что плотность экрана была 213, что меньше 240, используемой в xhdpi. Значит, он думал, что у устройства плотность mdpi.
Мое решение заключалось в том, чтобы у
dimens
папки былdividerHeight
параметр. Я установил его2dp
вvalues-mdpi
папку, но1dp
вvalues-hdpi
папки etc.источник
вы забыли букву "r" в конце разделителя в XML-макете разделителя
вы вызываете макет @ drawable / list_divider, но ваш XML-разделитель называется "list_divide"
источник
установить android: dividerHeight = "1dp"
источник