shapeタグを使用することにより、グラデーションや枠線、角丸などの効果を持った背景形状を定義できます。
これでボタンをわざわざ画像にする機会も減りますね。
定義した形状は、backgroundで指定して使用します。
注意点としては、とある角(例えば右上の角)だけ丸くしない(0dpを指定)はできないようです。
drawable/my_shape.xml
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" // rectangle | oval | line | ring > <!-- 角を丸める --> <corners android:radius="5dp" // すべての角を半径5pxの円で丸める android:topLeftRadius="5dp" // 左上の角を半径5pxの円で丸める android:topRightRadius="5dp" // 右上の角を半径5pxの円で丸める android:bottomLeftRadius="5dp" // 左下の角を半径5pxの円で丸める android:bottomRightRadius="5dp" // 左下の角を半径5pxの円で丸める /> <!-- グラデーション --> <gradient android:angle="270" // グラデの角度(3時を基準として時計回り) android:startColor="@color/white" // この色から、 android:centerColor="@color/blue" // この色を通って、 android:endColor="@color/black" // この色へグラデーションする android:type="linear" // linear | radial | sweep android:centerX="0.5" // グラデの中心のX座標割合(0~1.0) radial,sweepで有効 android:centerY="0.5" // グラデの中心のY座標割合(0~1.0) radial,sweepで有効 android:gradientRadius="10" // radialで有効 android:usesLevel="true" // LevelListDrawableを使用するか /> <!-- パディング --> <padding android:left="5dp" android:top="5dp" android:right="5dp" android:bottom="5dp" /> <!-- この形状の幅と高さ --> <size android:width="100dp" android:height="100dp" /> <!-- この形状の色 --> <solid android:color="@color/black" /> <!-- 枠線 --> <stroke android:width="3dp" // 枠の幅 android:color="@color/gray" // 枠の色 android:dashWidth="5dp" // 点線枠の幅 android:dashGap="1dp" // 点線枠の間隔 /> </shape>
layout/main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/my_shape" android:text="Test" /> </LinearLayout>
コメント