私は私のプロジェクトでこのようにcontext.getDrawable()
を使用しました:
Drawable greenProgressbar = context.getDrawable(R.drawable.custom_progressbargreen);
しかし、EclipseはMinimum API level of 21
を必要とするエラーを私に与えています。これは、クイックGoogle検索後、APPがAndroid 5.0
でのみ使用できることを意味します。すべてのデバイスがこのバージョンのAndroidを使用しているわけではないので、context.getDrawable()
の代替品が必要です。
SDK 22のドキュメントによると、以前に受け入れられていた方法は廃止されました。
Android.os.Build.VERSION_CODES#JELLY_BEANより前は、ここで渡されるリソースIDが別のDrawableリソースのエイリアスである場合、この関数は最終的な構成密度を正しく取得しませんでした。これは、エイリアスリソースの密度構成が実際のリソースと異なる場合、返されるDrawableの密度が不正確になり、スケーリングが不適切になることを意味します。
この回答 で指摘されているように、より良い解決策は ContextCompat :ContextCompat.getDrawable(context, R.drawable.***)
を使用することです。
コンテキストの後にgetResources()
を追加してみてください。これは次のとおりです。
Drawable greenProgressbar = context.getResources().getDrawable(R.drawable.custom_progressbargreen);
動作するはずです。
私はgetDrawable()メソッドを参照したいのと同じ状況にありましたが、これは現在では非推奨です。
私が使用したもの、
myButton.setImageDrawable(ContextCompat.getDrawable(getActivity(), R.drawable.ic_btn_off));
これがあなたを助けることを願っています
以前にも同様の問題がありました。このようにしてみましたか?
Drawable greenProgressbar = context.getResources().getDrawable(R.drawable.custom_progressbargreen);
「getDrawable(id、this.getTheme())」を使用する必要があります。このメソッドは現在まで非推奨ではありません。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Lollipop) {
view.setBackground(getResources().getDrawable(R.drawable.radioline,this.getTheme()));
} else {
view.setBackground(getResources().getDrawable(R.drawable.radioline));
}
ContextCompact.getDrawable(Context context、int resID)を使用することに同意します。それは私のために働き、私のアプリはAPI 19をターゲットにします。