Bir res/drawable/test.png
resmim var (R.drawable.test).
Bu görüntüyü Drawable
, örneğin kabul eden bir işleve geçirmek istiyorum mButton.setCompoundDrawables()
.
Öyleyse bir görüntü kaynağını a Drawable
.
Bir res/drawable/test.png
resmim var (R.drawable.test).
Bu görüntüyü Drawable
, örneğin kabul eden bir işleve geçirmek istiyorum mButton.setCompoundDrawables()
.
Öyleyse bir görüntü kaynağını a Drawable
.
Yanıtlar:
Faaliyetinizde getResources yöntemi olmalıdır. Yapmak:
Drawable myIcon = getResources().getDrawable( R.drawable.icon );
Bu kod kullanımdan kaldırıldı:
Drawable drawable = getResources().getDrawable( R.drawable.icon );
Bunun yerine şunu kullanın:
Drawable drawable = ContextCompat.getDrawable(getApplicationContext(),R.drawable.icon);
ResourcesCompat.getDrawable(getResources(), R.drawable.icon, null);
(3. parametrenin isteğe bağlı bir Tema örneğidir) kullanabilirsiniz.
getDrawable (int id)
Yöntem API 22 olarak amorti edilir.
Bunun yerine getDrawable (int id, Resources.Theme theme)
for API 21+
Kod böyle görünecektir.
Drawable myDrawable;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
myDrawable = context.getResources().getDrawable(id, context.getTheme());
} else {
myDrawable = context.getResources().getDrawable(id);
}
getResources().getDrawable(R.drawable.ic_warning_80dp, context?.theme)
Sadece getDrawable (...) kullanırken "kullanımdan kaldırıldı" mesajı alıyorsanız, bunun yerine destek kitaplığından aşağıdaki yöntemi kullanmanız gerektiğini eklemek istiyorum.
ContextCompat.getDrawable(getContext(),R.drawable.[name])
Bu yöntemi kullanırken getResources () yöntemini kullanmanız gerekmez.
Bu, şöyle bir şey yapmaya eşdeğerdir:
Drawable mDrawable;
if(android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP){
mDrawable = ContextCompat.getDrawable(getContext(),R.drawable.[name]);
} else {
mDrawable = getResources().getDrawable(R.id.[name]);
}
Bu hem Lollipop öncesi hem de sonrası sürümlerde çalışır.
Vektörü olsun veya olmasın, vektör kaynağından Çekilebilir Alın:
AppCompatResources.getDrawable(context, R.drawable.icon);
Not: vektör kaynağı için
ContextCompat.getDrawable(context, R.drawable.icon);
üretecektir android.content.res.Resources$NotFoundException
.
Çekmeceyi görüntünün ayarlandığı görünümden almaya çalışıyorsanız,
ivshowing.setBackgroundResource(R.drawable.one);
o zaman çekilebilir aşağıdaki kodla sadece boş değer döndürür ...
Drawable drawable = (Drawable) ivshowing.getDrawable();
Bu nedenle, çekilebilir olanı belirli bir görünümden almak istiyorsanız, görüntüyü aşağıdaki kodla ayarlamak daha iyidir.
ivshowing.setImageResource(R.drawable.one);
ancak o zaman çekilebilir tam olarak dönüştüreceğiz.
Bir parçadan miras alıyorsanız şunları yapabilirsiniz:
Drawable drawable = getActivity().getDrawable(R.drawable.icon)