Я хочу нарисовать пользовательский панельный вид с поднятой рамкой (терминология Swing). Существуют ли для этого определенные предопределенные методы? Например, можно ли взять границы с текущего стиля кнопки? Или я обязан создать свой собственный патч или что-то еще?Есть ли по умолчанию граничные фоны?
ответ
Грубый подход к этому состоял бы в том, чтобы сделать XML-чертеж со списком слоев внутри и самостоятельно составить структуру кнопки. В моем примере вы получаете следующий стиль кнопки.
И все цвета могут быть изменены, если это необходимо в соответствии с вашим стилем. Я знаю, что углы должны быть под углом 45º вместо 90º, но нет простого способа показать это здесь без какого-либо тестирования. Исходный XML является следующее:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- The gray part of the border -->
<item>
<shape>
<solid android:color="#fccc"></solid>
</shape>
</item>
<!-- The black part of the border -->
<item android:right="2dip"
android:bottom="2dp">
<shape>
<solid android:color="#f000"></solid>
</shape>
</item>
<!-- The content -->
<item android:left="2dip"
android:top="2dp"
android:right="2dip"
android:bottom="2dp">
<shape>
<solid android:color="#ffafafaf"></solid>
</shape>
</item>
</layer-list>
В качестве дополнительного примера того, что вы можете достичь здесь, просто добавив <corners android:radius="4dp"></corners>
к границе формы, мы можем получить немного меньше глаз-больное стиль:
Или вы можете пойти на другой подход и избегать повышенной границы скоса, что упростит его на стороне XML и, вероятно, лучше. Для достижения такого рода кнопки:
XML-это так же просто, как:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="4dp"></corners>
<solid android:color="#fccc"></solid>
<stroke android:width="2dp" android:color="#ff6f6f6f"></stroke>
</shape>
я думаю, что вы создаете свой собственный девять патч изображение –
Если все, что вы хотите это коническая граница , вы можете сделать это с помощью фигурных чертежей, но я не пробовал это сам. –