我想绘制带有凸起斜面边框的自定义面板视图(Swing术语)。是否有一些预定义的方法?例如,是否可以从当前按钮样式中获取边框?或者我不得不创建自己的9补丁或什么?
答案 0 :(得分:3)
对此的粗略方法是使用内部的图层列表制作XML drawable,并自己构建按钮的结构。在我的示例中,您实现了以下按钮样式。
如果需要,可以更改所有颜色以适合您的风格。我知道角落应该是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>