Po wywołaniu setCompoundDrawables
metody złożony Drawable nie jest wyświetlany.
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);
jakieś pomysły?
setBounds(Rect)
nazywa.
Po wywołaniu setCompoundDrawables
metody złożony Drawable nie jest wyświetlany.
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn.setCompoundDrawables(myDrawable, null, null, null);
jakieś pomysły?
setBounds(Rect)
nazywa.
Odpowiedzi:
Musiałem używać setCompoundDrawablesWithIntrinsicBounds
.
Użyj tego (przetestowałem). Działa dobrze
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#setCompoundDrawablesWithIntrinsicBounds
Obraz jest pusty, ponieważ nie ma określonych granic. Możesz użyć, setCompoundDrawables()
ale zanim określisz granice obrazu, używając Drawable.setBounds()
metody
Przykład ustawiony na górze:
view.setCompoundDrawablesWithIntrinsicBounds(
null,
getResources().getDrawable(R.drawable.some_img),
null,
null
);
kolejność argumentów: (lewy, górny, prawy, dolny)
W Kotlinie:
1) Zestaw drawable
:
val drawable = ContextCompat.getDrawable(context!!,R.drawable.ic_image)?.apply {
setBounds(0, 0, intrinsicWidth, intrinsicHeight)
}
lub
val drawable = ResourcesCompat.getDrawable(resources, R.drawable.ic_image, null)?.apply {
setBounds(0, 0, minimumWidth, minimumHeight)
}
2) Zestaw TextView
:
textView.setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null)
lub
button.setCompoundDrawables(null, drawable, null, null)
setCompoundDrawablesWithIntrinsicBounds
zadziała ..
Dla mnie setCompoundDrawablesWithIntrinsicBounds (Drawable, Drawable, Drawable, Drawable) nie działał.
Musiałem użyć setCompoundDrawablesWithIntrinsicBounds (0, 0, 0, 0) .
Przykład z Kotlinem:
val myView = layoutInflater.inflate(R.layout.my_view, null) as TextView
myView.setCompoundDrawablesWithIntrinsicBounds(0, myDrawable, 0, 0)
Obraz nie jest wyświetlany, ponieważ nie określono granic, więc masz tutaj 2 opcje.
1. metoda
Użyj setCompoundDrawablesWithIntrinsicBounds
metody, jak pokazano poniżej
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
btn. setCompoundDrawablesWithIntrinsicBounds(myDrawable, null, null, null);
2. metoda
Przed zastosowaniem do TextView możesz zastosować obwiednie do rysunku, jak pokazano poniżej
Drawable myDrawable = getResources().getDrawable(R.drawable.btn);
myDrawable.setBounds( 0, 0, myDrawable.getIntrinsicWidth(), myDrawable.getIntrinsicHeight());
btn.setCompoundDrawables(myDrawable, null, null, null);
Otóż to.
(..)WithIntrinsicBounds
należy wywołać wariant nazwanej metody . Na marginesie,padding
dla związku rozciągliwej musi być ustawiony po tej rozmowy, aby spowodować efekt