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