2017-04-10 9 views
1

ビューの背景色を変更したいのですが、これが私が見つけた唯一の方法です。しかし、特定のAPIでのみ動作するというメッセージが表示されます。私はそれを何らかの形でAPI15まで動作させることはできますか?または、実際にボタンが選択されたことをユーザーに示すより良い方法はありますか?API 21の前にView.setBackgroundTintList?

選択したユーザーボタンの
public static void setIconColor(TextView tv, int which, int color) { 
     tv.getCompoundDrawables()[which].mutate(); 
     tv.getCompoundDrawables()[which].setColorFilter(ContextCompat.getColor(tv.getContext(), color), PorterDuff.Mode.SRC_ATOP); 
    } 

    public static void setIconColor(ImageView imageView, int color) { 
     imageView.getDrawable().mutate(); 
     imageView.getDrawable().setColorFilter(ContextCompat.getColor(imageView.getContext(), color), PorterDuff.Mode.SRC_ATOP); 
    } 

答えて

2

ViewCompat.setBackgroundTintList()は4

が背景描画可能に色合いを適用API件までトリックを行います。

これは、API v21以降で実行すると常に有効になります。 API v21より前のプラットフォームで実行している場合は、ビューがTintableBackgroundViewインターフェイスを実装している場合にのみ有効です。

+0

クリックは本当に醜いアニメーションを持っていますが、ありがとうございます。 – newToEverything

1

はい、Javaコードを使用し

あなたはなどの任意のビューの描画可能な色をこのように変更できますか?あなたが使用する必要があります

android:background="?attr/selectableItemBackground" 

あなたを助けることを望みます!

関連する問題