setCompoundDrawablesYöntemi çağırdıktan sonra Drawable bileşiği gösterilmez.
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);
Düşüncesi olan var mı?
setBounds(Rect)denir.
setCompoundDrawablesYöntemi çağırdıktan sonra Drawable bileşiği gösterilmez.
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);
Düşüncesi olan var mı?
setBounds(Rect)denir.
Yanıtlar:
Kullanmam gerekiyordu setCompoundDrawablesWithIntrinsicBounds.
Bunu kullanın (test ettim). İyi çalışıyor
Drawable image = context.getResources().getDrawable( R.drawable.ic_action );
int h = image.getIntrinsicHeight();
int w = image.getIntrinsicWidth();
image.setBounds( 0, 0, w, h );
button.setCompoundDrawables( image, null, null, null );
EditText#setCompoundDrawablesWithIntrinsicBoundsen az API 17 gerektirdiğinden 17'den düşük API'ları hedeflerken yararlıdır .
Görüntü sınır tanımlanmadığı için boş. Kullanabilirsiniz setCompoundDrawables()ancak Drawable.setBounds()yöntemi kullanarak resmin sınırlarını belirtmeden önce
Üste ayarlanan örnek:
view.setCompoundDrawablesWithIntrinsicBounds(
null,
getResources().getDrawable(R.drawable.some_img),
null,
null
);
bağımsız değişken sırası: (sol, üst, sağ, alt)
Kotlin'de:
1) Set drawable:
val drawable = ContextCompat.getDrawable(context!!,R.drawable.ic_image)?.apply {
setBounds(0, 0, intrinsicWidth, intrinsicHeight)
}
veya
val drawable = ResourcesCompat.getDrawable(resources, R.drawable.ic_image, null)?.apply {
setBounds(0, 0, minimumWidth, minimumHeight)
}
2) ayarlayın TextView:
textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)
veya
button.setCompoundDrawables(null, drawable, null, null)
setCompoundDrawablesWithIntrinsicBoundsyarayacak ..
Benim için setCompoundDrawablesWithIntrinsicBounds (Drawable, Drawable, Drawable, Drawable) çalışmadı.
SetCompoundDrawablesWithIntrinsicBounds (0, 0, 0, 0) kullanmak zorunda kaldım .
Kotlin ile örnek:
val myView = layoutInflater.inflate(R.layout.my_view, null) as TextView
myView.setCompoundDrawablesWithIntrinsicBounds(0, myDrawable, 0, 0)
Resim, sınırları belirtmediğiniz için gösterilmiyor, bu nedenle burada 2 seçeneğiniz var.
1. Yöntem
setCompoundDrawablesWithIntrinsicBoundsAşağıda gösterildiği gibi yöntemi kullanın
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn. setCompoundDrawablesWithIntrinsicBounds(myDrawable, null, null, null);
2. Yöntem
Aşağıda gösterildiği gibi TextView uygulamasına uygulamadan önce çekmeceye sınırlar uygulayabilirsiniz
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
myDrawable.setBounds( 0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight());
btn.setCompoundDrawables(myDrawable, null, null, null);
Bu kadar.
(..)WithIntrinsicBoundsçağrılması gerekir. Yan notta,paddingBileşik