Ответ 1
Я изменил атрибут android:radius
на android:topRightRadius
и android:topLeftRadius
Я могу создать форму, которая представляет собой прямоугольник со всеми закругленными ребрами. Однако то, что я хочу, представляет собой прямоугольную форму с закругленными двумя ребрами. Возможно ли это?
Я по существу взламываю ListView, который выглядит как пузырь с закругленными краями. Я хочу добавить заголовок, который имеет два верхних края, закругленные, и нижний колонтитул с двумя нижними краями закругленными.
Я изменил атрибут android:radius
на android:topRightRadius
и android:topLeftRadius
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
Этот код просто работает (с?) Android версии 2.2. Обращаясь к документации, код должен выглядеть следующим образом:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:radius="2dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
Вы можете найти это полезным.
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
Я думаю, что лучшим (по моему мнению, вашим вопросом) является создание 9patch-изображения и использование его в качестве фона - можно определить растягиваться по мере необходимости и установить на уровне XML, экономя какую-то работу над кодом.
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
Используйте приведенный выше код
Я бы попробовал рисовать округленный прямоугольник, а затем два дополнительных прямоугольника того же размера, что и округленный радиус угла прямоугольника, и поместите их в углы, которые вы не хотите округлять.
Так, например, закругленный прямоугольник с радиусом 15px и два регулярных прямоугольника 15x15px, помещенный в углы закругленного прямоугольника, который не должен быть закруглен.
EDIT: перечитав свой вопрос, вам может быть лучше сделать простой 9-патч-образ для верхней и нижней части вашего списка. Они будут растягиваться до любого размера без пикселизации. Это потребует, чтобы вы заранее создали изображения, и что-то с фигурами прямоугольника было бы легче изменить в коде позже. Тем не менее, 9-патч-путь был бы менее взломан.
Нарисуйте закругленный прямоугольник, а затем нарисуйте обычный прямоугольник над закругленным одним цветом.