Как установить радиус закругленного угла для цвета, который можно нарисовать с помощью XML? - PullRequest
97 голосов
/ 23 января 2010

На сайте андроида есть раздел о цветных рисунках . Определение этих drawables в xml выглядит следующим образом:

<resources>
    <drawable name="solid_red">#f00</drawable>
    <drawable name="solid_blue">#0000ff</drawable>
    <drawable name="solid_green">#f0f0</drawable>
</resources>

В Java API они имеют следующий метод для определения закругленных углов:

setCornerRadius(float radius)

Есть ли способ установить закругленные углы в xml?

Ответы [ 3 ]

277 голосов
/ 23 января 2010

Используйте тег <shape> для создания рисованного в XML с закругленными углами. (Вы можете сделать другие вещи с помощью тега shape, например, определить цветовой градиент).

Вот копия XML-файла, который я использую в одном из своих приложений для создания рисованного текста с белым фоном, черной рамкой и закругленными углами:

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

    <stroke android:width="3dp"
            android:color="#ff000000" />

    <padding android:left="1dp"
             android:top="1dp"
             android:right="1dp"
             android:bottom="1dp" /> 

    <corners android:bottomRightRadius="7dp"
             android:bottomLeftRadius="7dp"
             android:topLeftRadius="7dp"
             android:topRightRadius="7dp" /> 
</shape>
18 голосов
/ 07 мая 2010

Ответ mbaird работает отлично. Просто имейте в виду, что в Android есть ошибка (по крайней мере, 2.1), что, если вы установите радиус каждого отдельного угла равным 0, все углы будут равны 0 (по крайней мере, в случае с единицами "dp"; попробуйте это с любыми другими единицами).

Мне нужна была форма, где верхние углы были закруглены, а нижние углы были квадратными. Я добился этого, установив углы, которые я хотел, чтобы они были квадратными, чтобы значение было немного больше 0: 0,1dp. Он по-прежнему отображается как квадратные углы, но не заставляет другие углы иметь радиус 0.

0 голосов
/ 22 февраля 2019

Попробуйте код ниже

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners
    android:bottomLeftRadius="30dp"
    android:bottomRightRadius="30dp"
    android:topLeftRadius="30dp"
    android:topRightRadius="30dp" />
<solid android:color="#1271BB" />

<stroke
    android:width="5dp"
    android:color="#1271BB" />

<padding
    android:bottom="1dp"
    android:left="1dp"
    android:right="1dp"
    android:top="1dp" /></shape>
...