2

我想绘制带有凸起斜角边框的自定义面板状视图(Swing 术语)。有一些预定义的方法吗?例如,是否可以从当前按钮样式中获取边框?或者我必须创建自己的 9 补丁或其他什么?

4

1 回答 1

3

一种粗略的方法是制作一个可绘制的 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>
于 2012-05-18T09:09:41.587 回答