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

Как сделать ход для 3 сторон для формы в андроиде?

Я использую штрих, чтобы сделать цветную рамку фигурой в макете xml в android.

Могу ли я сделать такт только для 3-х краев (слева, сверху, снизу) справа НЕТ?

4b9b3361

Ответ 1

Вы можете добиться этого, используя список слоев и возиться с дополнением. Вам понадобятся 3 элемента:

1: Форма border.xml, которая представляет собой сплошную форму в цвете вашей границы: border.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ff0000"/>
</shape>

2: "внутренняя" форма, форма, в которой вы хотите, чтобы граница появлялась вокруг: inner.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#00ff00"/>
</shape>

3: Список слоев, который поместит эти 2 поверх каждого другого. Вы создаете границу, устанавливая прописку во внутренней форме: layerlist.xml

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/border"/>
<item android:drawable="@drawable/inner"
    android:top="3dp" android:right="0dp" android:bottom="3dp"
    android:left="3dp" />
</layer-list>

Ответ 2

Другим подходом было бы использовать 9-Patch png файл для вашего фона. Вы делаете это, беря обычный файл png, а затем используя инструмент, например this, чтобы определить:

  • Область, в которой находится ваш контент в png.
  • Область вашего png, которая растягивается как базовый элемент управления, растет как по ширине, так и по высоте.

Как только вы создадите файл png с 9 патчами, добавьте его в свои чертежи (определите файлы для различных разрешений). Затем просто установите drawable как ваш контрольный фон.

android:background="@drawable/my9_patch_file_name"

Ответ 3

Вот мое решение, которое работает, если вы хотите прозрачный или полупрозрачный цвет фона.

<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <inset xmlns:android="http://schemas.android.com/apk/res/android"
            android:insetLeft="-1dp"
            >
        <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <stroke
                android:color="#c45b5b5b"
                android:width="1dp"/>
            <corners
                android:bottomLeftRadius="0dp"
                android:bottomRightRadius="5dp"
                android:topLeftRadius="0dp"
                android:topRightRadius="5dp"
                />
        </shape>
        </inset>
    </item>
    <item
        android:top="1dp"
        android:right="1dp"
        android:bottom="1dp"
        android:left="0dp">
        <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <solid android:color="@color/infoBox_Background"/>
            <corners
                android:bottomLeftRadius="0dp"
                android:bottomRightRadius="5dp"
                android:topLeftRadius="0dp"
                android:topRightRadius="5dp"
                />
        </shape>
    </item>
</layer-list>

Ответ 4

Используя ответ @Mopper, вам это тоже понравится.

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape>
            <solid android:color="#ff0000" />
        </shape>
    </item>
    <item
        android:bottom="3dp"
        android:left="3dp"
        android:right="0dp"
        android:top="3dp">
        <shape>
            <solid android:color="#00ff00" />
        </shape>
    </item>
</layer-list>