Android - выведенный с закругленными углами только сверху
У меня было это возможно для округленного прямоугольника в качестве фона:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<stroke android:width="1dp" android:color="@color/light_gray" />
<padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" />
<corners android:radius="6dp" />
</shape>
Это нормально работает, как и ожидалось.
Теперь я хочу изменить это только на верхние углы, поэтому я изменяю его на следующее:
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white" />
<stroke android:width="1dp" android:color="@color/light_gray" />
<padding android:left="10dp" android:top="10dp" android:right="10dp" android:bottom="10dp" />
<corners android:topLeftRadius="6dp" android:topRightRadius="6dp"
android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp"/>
</shape>
Но теперь ни один из углов не округлен, и я получаю простой прямоугольник. Что мне здесь не хватает?
Ответы
Ответ 1
Попробуйте дать эти значения:
<corners android:topLeftRadius="6dp" android:topRightRadius="6dp"
android:bottomLeftRadius="0.1dp" android:bottomRightRadius="0.1dp"/>
Обратите внимание, что я изменил 0dp
на 0.1dp
.
РЕДАКТИРОВАТЬ: Смотрите Aleks G комментарий ниже для более чистой версии
Ответ 2
Попробуйте сделать что-то вроде этого:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:bottom="-20dp" android:left="-20dp">
<shape android:shape="rectangle">
<solid android:color="@color/white" />
<corners android:radius="20dp" />
</shape>
</item>
</layer-list>
Кажется, не подходит для установки другого углового радиуса прямоугольника. Таким образом, вы можете использовать этот хак.
Ответ 3
Основываясь на busylee answer, вы можете сделать drawable
, который имеет только один un округленный угол (вверху слева), в этом примере):
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="@color/white" />
<!-- A numeric value is specified in "radius" for demonstrative purposes only,
it should be @dimen/val_name -->
<corners android:radius="10dp" />
</shape>
</item>
<!-- To keep the TOP-LEFT corner UNROUNDED set both OPPOSITE offsets (bottom+right): -->
<item
android:bottom="10dp"
android:right="10dp">
<shape android:shape="rectangle">
<solid android:color="@color/white" />
</shape>
</item>
</layer-list>
Обратите внимание, что приведенный выше drawable
отображается не в предварительном просмотре Android Studio (2.0.0p7). Чтобы его предварительно просмотреть, создайте другое представление и используйте его как android:background="@drawable/..."
.
Ответ 4
В моем случае ниже код
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:top="10dp" android:bottom="-10dp"
>
<shape android:shape="rectangle">
<solid android:color="@color/maincolor" />
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomLeftRadius="0dp"
android:bottomRightRadius="0dp"
/>
</shape>
</item>
</layer-list>
Ответ 5
Я попробовал свой код. Я получил верхнюю закругленную угловую кнопку. Я дал цвета как @ffffff и srtoke, я дал # C0C0C0. попробуйте 1) дать андроид: bottomLeftRadius = "0.1dp" вместо 0. если его не работает 2) проверьте, какое разрешение и разрешение эмуляторов. Я создал загружаемую папку под res и используя ее. (hdpi, mdpi ldpi), у вас есть этот xml.
это мой выход
![enter image description here]()
Ответ 6
Вам может потребоваться прочитать https://developer.android.com/guide/topics/resources/drawable-resource.html#Shape
и ниже есть примечание.
Примечание. Каждый угол должен (изначально) иметь радиус угла больше 1, иначе углы не закруглены. Если вы хотите, чтобы определенные углы не округлялись, необходимо использовать андроид: радиус, чтобы установить радиус угла по умолчанию больше 1, но затем переопределить каждый угол с нулевыми значениями, обеспечивая нуль ( "0dp" )), где вы не хотите закругленных углов.
Ответ 7
Создайте roung_top_corners.xml на drawable и скопируйте приведенный ниже код
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<corners
android:topLeftRadius="22dp"
android:topRightRadius="22dp"
android:bottomLeftRadius="0dp"
android:bottomRightRadius="0dp"
/>
<gradient
android:angle="180"
android:startColor="#1d2b32"
android:centerColor="#465059"
android:endColor="#687079"
android:type="linear" />
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp"
/>
<size
android:width="270dp"
android:height="60dp"
/></shape>