0

背景として ShapeDrawable を持つビューがあり、他の部分 (「ストローク」など) を変更せずに、Drawable の背景色 (「ソリッド」部分) のみを変更できるようにしたいと考えています。それを達成する方法はありますか?ありがとう。

4

2 に答える 2

0

setColorFilter()はどうですか。

これをinvalidate()と組み合わせて使用​​すると、ドローアブルが再描画されます。これらのリンクを参照してください

ShapeDrawableカラーフィルター

Drawable InvalidateSelf

また、スタック上の素敵な投稿に出くわしました。これも見てください。 Androidドローアブルの色を変更する方法

于 2012-06-01T10:48:23.350 に答える
0

私は解決策を見つけました:実際に私の場合、ドローアブルをXMLファイルとして定義し、AndroidはそれをShapeDrawableではなくGradientDrawableオブジェクトに変換したので、それをRTT(ランタイムタイプ)にキャストし、それを使用しましたsetColor 関数:

GradientDrawable colorBackground=(GradientDrawable)currentColorView.getBackground();
colorBackground.setColor(color);

先ほど言ったように、GradientDrawable でしか機能しないので、他のドローアブル タイプの場合は、別の方法を探す必要があります。

于 2012-06-02T16:14:01.377 に答える