カスタム AdapterView 実装の場合、選択した項目にカラー オーバーレイを追加したいと思います。AdapterView の子にカラー オーバーレイを追加するにはどうすればよいですか?
質問する
8660 次
2 に答える
10
独自のレイアウトを使用している場合は、コンテナーをRelativeLayout
(または から継承する Layout クラスRelativeLayout
) に変更し、メイン レイアウトの後にカラー オーバーレイを配置します。必要なのは、 を追加してView
背景とアルファを設定するだけです。alpha
値 1 に設定するとこのオーバーレイが有効になり、alpha
0 に設定すると通常に戻ります。
例:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- add your views here -->
<View
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#8000FF00" />
</RelativeLayout>
これにより、レイアウト内でその前にある他のビューの上に、50% アルファの緑色のレイヤーがオーバーレイされます。
于 2013-11-13T12:40:51.280 に答える
5
OK、さらに調査を行いました。それが私が最終的に思いついたものです:
// prepare a gray filter setting saturation to 0, or ...
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
Paint paint = new Paint();
ColorFilter filter = new ColorMatrixColorFilter(cm);
// ... prepare a color filter
ColorFilter filter = new PorterDuffColorFilter(Color.rgb(34, 136, 201), PorterDuff.Mode.OVERLAY);
// create paint
paint.setColorFilter(filter);
// override dispatchDraw of the view
@Override
protected void dispatchDraw(Canvas canvas) {
if (isPressed()) {
canvas.saveLayer(null, paint, Canvas.ALL_SAVE_FLAG);
super.dispatchDraw(canvas);
canvas.restore();
} else {
super.dispatchDraw(canvas);
}
}
于 2013-11-14T06:49:33.423 に答える