回答:
Drawable d = getResources().getDrawable(android.R.drawable.ic_dialog_email);
ImageView image = (ImageView)findViewById(R.id.image);
image.setImageDrawable(d);
getDrawable(int id)
は非推奨です。getDrawable(int id, Resources.Theme theme)
代わりに使用してください。メソッドgetTheme()
は役立つはずです。
とおりAPI 21、あなたが使用する必要がありますgetDrawable(int, Theme)
代わりにする方法をgetDrawable(int)
、それはあなたがフェッチすることを可能にするよう、drawable
特定の関連付けられたオブジェクトresource ID
与えられたためにscreen density/theme
。deprecated
getDrawable(int)
メソッドを呼び出すことは、を呼び出すことと同じgetDrawable(int, null)
です。
代わりに、サポートライブラリの次のコードを使用してください。
ContextCompat.getDrawable(context, android.R.drawable.ic_dialog_email)
このメソッドを使用することは、以下を呼び出すことと同じです。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
return resources.getDrawable(id, context.getTheme());
} else {
return resources.getDrawable(id);
}
context.getDrawable(id);
に相当するようですresources.getDrawable(id, context.getTheme());
ResourcesCompat.getDrawable(resources, id, context.getTheme());
最善の方法は
button.setBackgroundResource(android.R.drawable.ic_delete);
または、これはドローアブルの左の場合、右の場合のようなものです。
int imgResource = R.drawable.left_img;
button.setCompoundDrawablesWithIntrinsicBounds(imgResource, 0, 0, 0);
そして
getResources().getDrawable()
廃止されました
API 21以降getDrawable(int id)
は非推奨です。 だから今あなたは使う必要があります
ResourcesCompat.getDrawable(context.getResources(), R.drawable.img_user, null)
しかし、最善の方法は、ドローアブルとカラーを取得するための共通のクラスを1つ作成する必要があります。将来、何かが変更または廃止される場合は、プロジェクトのすべての場所を変更する必要がないためです。このメソッドで変更するだけです。
object ResourceUtils {
fun getColor(context: Context, color: Int): Int {
return ResourcesCompat.getColor(context.getResources(), color, null)
}
fun getDrawable(context: Context, drawable: Int): Drawable? {
return ResourcesCompat.getDrawable(context.getResources(), drawable, null)
}
}
次のようにこのメソッドを使用します。
Drawable img=ResourceUtils.getDrawable(context, R.drawable.img_user)
image.setImageDrawable(img);
Kotlinプログラマー向けのソリューションに従う(API 22から)
val res = context?.let { ContextCompat.getDrawable(it, R.id.any_resource }