Я могу нарисовать границу для линейного макета, но он рисуется со всех сторон. Я хочу ограничить его только правой стороной, как вы делаете в CSS (border-right: 1px solid red;).
Я пробовал это, но это все еще привлекает все стороны:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<stroke
android:height="2dp"
android:width="2dp"
android:color="#FF0000" />
<solid android:color="#000000" />
<padding
android:bottom="0dp"
android:left="0dp"
android:right="1dp"
android:top="0dp" />
<corners
android:bottomLeftRadius="0dp"
android:bottomRightRadius="5dp"
android:radius="1dp"
android:topLeftRadius="5dp"
android:topRightRadius="0dp" />
</shape>
</item>
Любые предложения о том, как это сделать?
КСТАТИ, я не хочу использовать взломать вид ширины 1dp с необходимой стороны.
Ответы:
Вы можете использовать это, чтобы получить границу на одной стороне
отредактированный
Поскольку многие, в том числе и я, хотели иметь
BorderDrawable
одностороннюю границу с прозрачным фоном, я реализовал функцию, которая могла бы давать мне границы с разным размером и цветом так же, как мы используем CSS. Но это не может быть использовано через XML. Для поддержки XML, я добавил,BorderFrameLayout
что ваш макет можно обернуть.Смотрите мой GitHub для полного источника.
источник
Легко, как пирог, позволяя прозрачный BG:
Измените угол, чтобы изменить положение границы:
источник
также возможно реализовать то, что вы хотите, используя один слой
таким образом , только левая граница видна , но вы можете достичь любой комбинации вы хотите, играя с
bottom
,left
,right
иtop
атрибутыitem
элементаисточник
Чтобы получить границу только с одной стороны отрисовки, примените отрицание
inset
к другим 3 сторонам (в результате чего эти границы будут нарисованы за пределами экрана).Этот подход похож на ответ Найки, но без использования a
layer-list
.источник
insertX
сверху, чтобы решить, какие границы показывать, а какие нет.В качестве альтернативы (если вы не хотите использовать фон), вы можете легко сделать это, сделав вид следующим образом:
Чтобы иметь только правую границу, поместите ее после макета (где вы хотите иметь границу):
Чтобы иметь только левую границу, поместите ее перед макетом (там, где вы хотите иметь границу):
Работал на меня ... Надеюсь, это поможет ...
источник
Я смог добиться эффекта с помощью следующего кода
Вы можете приспособиться к вашим потребностям в положении границы, изменив направление смещения
источник
источник
Другой отличный пример
источник
Здесь нет упоминаний о файлах с девятью патчами . Да, вам нужно создать файл, однако это довольно простая работа, и это действительно решение с поддержкой кросс-версии и прозрачности . Если файл помещен в
drawable-nodpi
каталог, он работает наpx
основе, и вdrawable-mdpi
работает примерно как база dp (благодаря повторной выборке).Пример файла для исходного вопроса ( border-right: 1px solid red; ) находится здесь:
http://ge.tt/517ZIFC2/v/3?c
Просто поместите его в
drawable-nodpi
каталог.источник
Границы разных цветов. Я использовал 3 предмета.
источник