Почему я не могу создать круглую границу для определенного угла?
В макете myroid xml я применяю границу, используя borderframe.xml в качестве фона.
Файл borderframe.xml выглядит следующим образом:
<?xml version="1.0" encoding="UTF-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="1dip"
android:color="#ffffff"/>
<solid
android:color="#95865F"/>
<corners
android:radius="10px"/>
<padding
android:left="1dp"
android:right="1dp"
android:top="1dp"
android:bottom="1dp"/>
</shape>
Теперь, пока есть андроид: radius = "10px", тогда он работает, но пока я собираюсь дать округлую форму только определенному углу, тогда это не сработает.
В log cat нет никакого erro-сообщения, но я нашел ошибку в eclipse, например:
The graphics preview in the layout editor may not be accurate:
* Different corner sizes are not supported in Path.addRoundRect.
Даже если в этом xml файле нет отступов, также я не вижу никакой границы.
Теперь, что я должен сделать для этого?
и каково его разрешение, если я хочу создать закругленную границу только для topLeftcorner и bottomLeftCorner.?
Спасибо.
Ответы
Ответ 1
Вам нужно будет сделать это, предполагая, что вам нужен только округленный верхний левый угол:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners
android:radius="20sp"
android:topRightRadius="0dp"
android:bottomRightRadius="0dp"
android:bottomLeftRadius="0dp" />
<gradient
android:startColor="@color/logo_blue"
android:endColor="@color/blue"
android:angle="0"/>
</shape>
Объяснение. Каждый угол должен (изначально) иметь радиус угла больше 1, иначе углы не закруглены. Если вы хотите, чтобы определенные углы не округлялись, необходимо использовать android:radius
, чтобы установить радиус угла по умолчанию больше 1, но затем переопределить каждый угол со значениями, которые вы действительно хотите, обеспечивая нуль ( "0dp" )), где вы не хотите округлых углов. [source]
Как следствие, вам нужно определить свой drawable как:
<?xml version="1.0" encoding="UTF-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android">
<stroke
android:width="1dip"
android:color="#ffffff"/>
<solid
android:color="#95865F"/>
<corners
android:radius="10px"
android:topRightRadius="0dp"
android:bottomRightRadius="0dp" />
<padding
android:left="1dp"
android:right="1dp"
android:top="1dp"
android:bottom="1dp"/>
</shape>
Обновление
От Документация по формату Draw Drawable Resource:
Android: радиус Dimension. Радиус для всех углов, как измерение значение или размерность. Это переопределяется для каждого угла с помощью следующие атрибуты.
overridden - ключевое слово для вашей проблемы...
Ответ 2
Я также сталкиваюсь с той же проблемой. Но для этого я использую список слоев. Я размещаю здесь свой ответ, который может вам помочь.
Пожалуйста, проверьте выходной экран ![image 1]()
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="#c1c1c1" />
<solid android:color="#c1c1c1" />
<corners android:radius="20dp"/>
</shape>
</item>
<item android:right="20dp"
>
<shape
android:shape="rectangle">
<stroke android:width="1dp" android:color="#c1c1c1" />
<solid android:color="#c1c1c1" />
</shape>
</item>
</layer-list>
Ответ 3
Я использую инструменты SDK 19, платформенные инструменты 11 и запускаю приложение в Android 4.0.3. Для меня работает следующий XML:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="#dd000000"/>
<padding
android:left="7dp"
android:top="7dp"
android:right="7dp"
android:bottom="7dp" />
<corners
android:bottomLeftRadius="25dp"
android:bottomRightRadius="25dp"
android:topLeftRadius="0dp"
android:topRightRadius="0dp" />
</shape>
Предупреждение Eclipse не может показывать предварительный просмотр. В нем приложение отображается правильно.
Ответ 4
Я получил решение на одном из форумов. Я решил это, комментируя каждый угол и добавляя xml в drawable. Я сохранил прокомментированный код ниже только для понимания.
Код XML -
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >
<solid android:color="#fd2149" />
<stroke android:width="1dip" android:color="#ffd102"/>
<!-- <corners
android:bottomLeftRadius="8dp"
android:bottomRightRadius="8dp"
android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
-->
<corners android:radius="8dp" />
</shape>
--- Edited-
Вышеупомянутый код - мой back.xml в папке с возможностью переноса, и, если необходимо, вы можете добавить отступ в тот же back.xml. Для тех, кто является новыми разработчиками, back.xml ссылается на ваш файл макета следующим образом
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textSize="20sp"
android:scrollbars="vertical"
android:background="@drawable/back">
Надеюсь, что это поможет.