7

この問題に答える投稿を探しましたが、どれもうまくいきませんでした. PNGファイルが適用されたImageButtonがあります。png は、白い矢印を除いてほとんど透明です。setColorFilter で矢印の色を赤くしたい:

imageButton.setColorFilter(Color.argb(255, 225, 0, 0));

しかし、これは何の影響もありません。さまざまな Porter-Duff モードで setColorFilter のバージョンを試しましたが、いずれも機能しませんでした。問題が何であるか、または私が見逃している可能性があるものについてのアイデアは大歓迎です。

4

2 に答える 2

13

(セットアップで) 使用しようとしている setColorFilter がそれらに適用されるため、ボタンから Drawable を取得する必要があります。

ImageButton btn = (ImageButton) myLayout.findViewByID(R.id.my_button);

int mycolor = getResources().getColor(R.color.best_color);

btn.getDrawable().setColorFilter(mycolor, PorterDuff.Mode.SRC_ATOP);

Drawable オブジェクトへの正しい参照がある限り、

e.g. textView.getCompoundDrawables()[2].setColorFilter(...);

そのxmlで:

<TextView
...
android:drawableLeft="..." 
...
 />

myDrawableObject.setColorFilter() を好みに合わせて使用​​できます。

編集:

ImageButton の場合、drawable は にimageButton.getDrawable()対応し、android:src="..."一方でプロパティimageButton.getBackground()に対応しandroid:background="..."ます。正しいドローアブルで setColorFilter を呼び出していることを確認してください。

于 2015-02-26T05:37:57.783 に答える
2

パーティーに遅刻しましたが、他の誰かがこの問題に遭遇した場合に備えて

プログラムでImageViewを作成している場合は、post()カラーフィルターを設定する前に使用することがわかりました

動作しません:

ImageView imageView = new ImageView(this);
imageView.setColorFilter(Color.WHITE);

動作します

ImageView imageView = new ImageView(context);

imageView.post(new Runnable() {
    @Override
    public void run() {
        imageView.setColorFilter(Color.WHITE);
    }
});
于 2018-04-01T05:35:59.333 に答える