同じIDを持つすべての新しいドローアブルを濃淡着色されている場合、ContextCompat.getDrawable(context, R.drawable.bg_chat_bubble)
へのすべての呼び出しは、オリジナル信号の代わりに着色画像を返します。チャットを終了して全く別のチャットを開いても、そこにある気泡には前回の色合いがあります。アプリを殺すだけで正しい色を復元できます。最初の色合いまで...DrawableCompat setTintは、私はいくつかの状況で色付けしたい泡をチャットしている
setTint
を呼び出した後に、ティントブランチ内に直接bubbleDrawable = ContextCompat.getDrawable(context, R.drawable.bg_chat_bubble)
を直接設定しても、オリジナルではなく色付きの画像が得られます。
私もgetResources().getDrawable(R.drawable.bg_chat_bubble)
を試しましたが、結果は同じです。ですから、いったん描画可能な再描画に色合いを使いたいと思ったら、そのリソースの色合いを常に設定しなければなりません。それ以外の場合は予測できない結果が得られます。
これは、Android 5.1(おそらく他のアプリ)でも、appcompat-v7:23.2.+
とappcompat-v7:23.1.+
で起きています。これは既知のバグですか、何か間違っていますか?
色を設定する前にドロアブルを変更しようとしました。 – pskink
ありがとう、これは完璧に動作します。しかし、メモリ消費はどうですか?あなたのコメントを答えにして、私はそれを受け入れます。 – shelll
新しい小さな「共通の状態」を作成するだけなので、大きな問題ではありません – pskink