Android: углы формы не работают при настройке отдельных углов
Мне нужно иметь фон, который имеет закругленные нижние левые/правые конусы (но не верхние левые/правые), ниже мой xml файл:
<?xml version="1.0" encoding="utf-8"?>
<layer-list
xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle" android:padding="1dp">
<solid android:color="#FFbdbebd"/>
<corners
android:bottomLeftRadius="12dip"
android:bottomRightRadius="12dip"
android:topLeftRadius="0dip"
android:topRightRadius="0dip"/>
</shape>
</item>
</layer-list>
Но результатом является простой прямоугольник без закругленного угла, если я использую только:
android:radius="12dip"
то все углы округлены, я искал и обнаружил ошибку, связанную с этим:
http://code.google.com/p/android/issues/detail?id=9161
но состояние ошибки:
Влево/вправо переключается, потому что андроид: bottomRightRadius = "2dp" оказалось, чтобы указать левый нижний округленный угол.
который не может быть связан с моей проблемой, я также попытался использовать:
android:radius="12dip"
за которым следует
android:topLeftRadius="0dip"
android:topRightRadius="0dip"
без успеха.
Может ли кто-нибудь помочь? Спасибо!
Ответы
Ответ 1
Я обнаружил, что может быть ошибка, если вы устанавливаете отдельные углы, и если любой из них равен 0, все они становятся 0, поэтому в конце я установил два из них на 1dip и два других на все, что мне нужно, поскольку ни один из них не равен 0, поэтому ошибка не влияет на него, и результат выглядит хорошо.
Ответ 2
Кажется, это известная проблема. Каждый угол должен быть > 1, иначе углы не будут округлены. Согласно документации на Android, это можно сделать, но это хакеры:
Примечание. Каждый угол должен (изначально) иметь радиус угла больше 1, иначе углы не закруглены. Если вы хотите, чтобы определенные углы не округлялись, необходимо использовать андроид: радиус, чтобы установить радиус угла по умолчанию больше 1, но затем переопределить каждый угол с нулевыми значениями, обеспечивая нуль ( "0dp" )), где вы не хотите > закругленные углы.
Смотрите здесь:
http://developer.android.com/guide/topics/resources/drawable-resource.html#corners-element
Ответ 3
Измените это:
<corners
android:bottomRightRadius="12dp"
android:bottomLeftRadius="12dp"
android:topLeftRadius="0dp"
android:topRightRadius="0dp"/>
:
<corners
android:radius="1dp"
android:bottomRightRadius="12dp"
android:bottomLeftRadius="12dp"
android:topLeftRadius="0dp"
android:topRightRadius="0dp"/>
и он должен работать как ожидалось.
Ответ 4
попробуйте эту работу для меня.
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="30dp"
android:bottomLeftRadius="30dp"
android:topLeftRadius="30dp"
android:topRightRadius="30dp"/>
</shape>