Я пытаюсь сделать пунктирную линию. Я использую это прямо сейчас для сплошной линии:
LinearLayout divider = new LinearLayout( this );
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, 2 );
divider.setLayoutParams( params );
divider.setBackgroundColor( getResources().getColor( R.color.grey ) );
Мне нужно что-то вроде этого, но пунктир вместо сплошной. Я хотел бы избежать сотен макетов, чередующихся между прозрачным макетом и сплошным макетом.
canvas.drawLine()
. В качестве альтернативы можно отключить аппаратное ускорение,canvas.drawPath
вместо этого можно использовать .dp
вместоpx
.android:layerType="software"
должен быть установлен на ImageView.эффект рисования установлен на объекте рисования
Вы можете создавать всевозможные точечные шаблоны, предоставляя больше чисел в массиве int [], который определяет отношения тире и пробела. Это простая, одинаково пунктирная линия.
источник
Создание пунктирной линии с использованием XML.
Создайте xml в папке drawable и присвойте этот фон элементу, для которого вы хотите установить пунктирную рамку.
Создание XML-фона "dashed_border":
Добавление этого фона к элементу:
источник
<corners android:radius="5dp" />
свою форму. См. Stackoverflow.com/a/41940609/1000551 для получения дополнительной информацииСоздайте xml (view_line_dotted.xml):
Установить в качестве фона вашего взгляда:
источник
<item android:bottom="-1dp" android:left="-1dp" android:right="-1dp" >
, если вы хотите горизонтальную линию толщиной 1 дп.android:layerType="software"
в представление или записьview.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
(см. Stackoverflow.com/questions/10843402/… ).То, что я сделал, когда хотел нарисовать пунктирную линию, это определить нарисованный dash_line.xml :
А затем в макете просто определите вид с фоном как dash_line . Обратите внимание, чтобы включить android: layerType = "software" , иначе это не будет работать.
источник
android:layerType="software"
то, что я искал! Ура!У меня есть пользовательская линия, которая поддерживает горизонтальную и вертикальную линию. код ниже:
источник
Используя этот класс, вы можете применить эффект «пунктир и подчеркивание» к многострочному тексту. чтобы использовать DashPathEffect, вы должны отключить аппаратное ускорение вашего TextView (хотя метод DashPathEffect имеет проблему с длинным текстом). Вы можете найти мой пример проекта здесь: https://github.com/jintoga/Dashed-Underlined-TextView/blob/master/Untitled.png .
Результат:
источник
Если вы ищете вертикальную линию, используйте эту схему.
Отрицательные значения сверху вниз и слева удаляют нежелательные стороны фигуры, оставляя одну пунктирную линию.
Используйте это в таком виде.
источник
Я использовал ниже в качестве фона для макета:
источник
android:shape="rectangle"
вместо линии?Я создал пунктирную пунктирную линию для EditText. Ну вот. Создайте свой новый XML. например, dashed_border.xml Код здесь:
И используйте ваш новый XML-файл в вашем EditText, например:
Ура! :)
источник
Используйте ShapeDrawable вместо LinearLayout и играйте с dashWidth и dashGap
http://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
источник
Лучшее решение для точечной работы фона идеально
источник
Для точечного эффекта на холсте установите этот атрибут для объекта рисования:
И измените значение 30 в зависимости от вашего рендера: он представляет «расстояние» между каждой точкой.
источник
Единственное, что сработало для меня, и я думаю, что это самый простой способ - это использовать Path с объектом рисования, подобным этому:
Затем onDraw (): (важно сбросить вызов, если вы меняете эти точки между вызовами ondraw, потому что Path сохраняет все движения)
источник
Мне понравилось решение от Ruidge , но мне нужно было больше контроля из XML. Поэтому я изменил его на Kotlin и добавил атрибуты.
1) Скопируйте класс Kotlin:
2) Создайте файл attr в каталоге / res и добавьте
3) Добавить стиль в файл стилей
4) Теперь вы можете использовать стиль по умолчанию
или установить атрибуты в XML
источник
Ни один из этих ответов не работал для меня. Большинство из этих ответов дают вам полупрозрачную границу. Чтобы избежать этого, вам нужно снова обернуть ваш контейнер другим контейнером с вашим предпочтительным цветом. Вот пример:
Вот так это выглядит
dashed_border_layout.xml
dashed_border_in.xml
dashed_border_out.xml
источник
Я не знаю почему, но проголосовавшие ответы не работают для меня. Я пишу это так и работает хорошо.
Определите пользовательский вид:
Тогда вы можете использовать его в своем XML:
источник
Я создал библиотеку с пользовательским представлением, чтобы решить эту проблему, и она должна быть очень простой в использовании. Смотрите https://github.com/Comcast/DahDit для получения дополнительной информации. Вы можете добавить пунктирные линии, как это:
источник
Аналогично tier777, здесь есть решение для горизонтальной линии:
Подсказка есть
<item android:top="-1dp">
.Чтобы отобразить пунктирную линию на старых устройствах (<= API 21), необходимо создать представление с помощью
android:layerType="software"
(см. Потенциальную ошибку ICS при рисовании пунктирной линией в Android ):Также вы можете добавить один и тот же вид , не
android:layerType="software"
кlayout-v23
для лучшей производительности, но я не уверен , что он будет работать на всех устройствах с API 23.источник