ImageView
withandroid:src
を a に設定していますShapedDrawable
。つまり、白い円です。私が望むのは、ImageView
いくつかのイベントに応答して実行時にこれを色付けすることです。imgView.setColorFilter
解決策のようですが、これを使用した後(さまざまなパラメーターを試した後)、画像が見えなくなります(画面に表示されません)。
これを解決するには?そして、カラーサークルを持つより良い方法はありますか?
ImageView
withandroid:src
を a に設定していますShapedDrawable
。つまり、白い円です。私が望むのは、ImageView
いくつかのイベントに応答して実行時にこれを色付けすることです。imgView.setColorFilter
解決策のようですが、これを使用した後(さまざまなパラメーターを試した後)、画像が見えなくなります(画面に表示されません)。
これを解決するには?そして、カラーサークルを持つより良い方法はありますか?
わかりました、私はこれで簡単に遊んでいて、サークルが消えるというあなたの問題に気づきました. 何を試したかを正確に説明することなく、カラーフィルターをDrawable
それ自体に設定しようとはしていないと思いますか? ImageView
( sでのみ動作するように見える とは対照的にBitmapDrawable
)。
ShapeDrawable
次のステートメントは、初期色として白で宣言された xml に対して完全に正常に機能します。
ImageView redCircle = (ImageView) findViewById(R.id.circle_red_imageview);
ImageView greenCircle = (ImageView) findViewById(R.id.circle_green_imageview);
ImageView blueCircle = (ImageView) findViewById(R.id.circle_blue_imageview);
// we can create the color values in different ways:
redCircle.getDrawable().setColorFilter(Color.RED, PorterDuff.Mode.MULTIPLY );
greenCircle.getDrawable().setColorFilter(0xff00ff00, PorterDuff.Mode.MULTIPLY );
blueCircle.getDrawable().setColorFilter(getResources().getColor(R.color.blue), PorterDuff.Mode.MULTIPLY );
完全を期すShapeDrawable
ために:(私は にサイズを設定しImageView
ます。以下を参照してください)
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
<solid android:color="@android:color/white" />
</shape>
そしてImageView
、例として s の 1 つ:
<ImageView
android:id="@+id/circle_red_imageview"
android:layout_width="40dp"
android:layout_height="40dp"
android:padding="5dp"
android:src="@drawable/circle_white" />
視覚的な結果:
画像の色を変更したい場合
PorterDuff.Mode.SRC_ATOP instead
PorterDuff.Mode.MULTIPLY
上記の例では。
android:tint
xml の ImageView で属性を使用できます。
例:
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/your_drawable"
android:tint="@color/your_color" />
Android 4.1.2 および 6.0.1 でテスト済み