2

隆起したベベル ボーダー (Swing 用語) を使用して、カスタム パネルのようなビューを描画したいと考えています。これにはいくつかの事前定義された方法がありますか? たとえば、現在のボタン スタイルから境界線を取得することは可能ですか? それとも、独自の 9 パッチなどを作成する必要がありましたか?

4

1 に答える 1

3

これに対する大まかなアプローチは、内部にレイヤー リストを含む XML ドローアブルを作成し、ボタンの構造を自分で構成することです。私の例では、次のボタン スタイルを実現します。

ここに画像の説明を入力

必要に応じて、スタイルに合わせてすべての色を変更できます。コーナーは 90 度ではなく 45 度の角度にする必要があることは承知していますが、テストを行わずにここでこれを示す簡単な方法はありません。ソース 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 に答える