studio - mostrar texto en textview android
Programable a la izquierda dibujable en un TextView (4)
Desde here veo el método setCompoundDrawablesWithIntrinsicBounds (int, int, int, int) se puede usar para hacer esto.
Tengo un textView en xml aquí.
<TextView
android:id="@+id/bookTitle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:drawableLeft="@drawable/checkmark"
android:gravity="center_vertical"
android:textStyle="bold"
android:textSize="24dip"
android:maxLines="1"
android:ellipsize="end"/>
Como puedes ver, establezco el DrawableLeft en xml.
Me gustaría cambiar el dibujable en el código.
¿Hay alguna forma de hacer esto? ¿O estableciendo el código drawableLeft en la vista de texto?
Puede usar setCompoundDrawablesWithIntrinsicBounds (int left, int top, int right, int bottom)
establece 0 donde no quieres imágenes
Ejemplo para Dibujar a la izquierda:
TextView textView = (TextView) findViewById(R.id.myTxtView);
textView.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon, 0, 0, 0);
Sugerencia: siempre que conozca algún atributo XML pero no tenga idea de cómo usarlo en el tiempo de ejecución. Simplemente vaya a la descripción de esa propiedad en el documento de desarrollador. Allí encontrará métodos relacionados si se admite en tiempo de ejecución. es decir, para DrawableLeft
Puede usar cualquiera de los siguientes métodos para configurar Drawable en TextView:
1- setCompoundDrawablesWithIntrinsicBounds (int, int, int, int)
2- setCompoundDrawables (Left_Drawable, Top_Drawable, Right_Drawable, Bottom_Drawable)
Y para obtener recursos extraíbles puedes usar:
getResources().getDrawable(R.drawable.your_drawable_id);
static private Drawable **scaleDrawable**(Drawable drawable, int width, int height) {
int wi = drawable.getIntrinsicWidth();
int hi = drawable.getIntrinsicHeight();
int dimDiff = Math.abs(wi - width) - Math.abs(hi - height);
float scale = (dimDiff > 0) ? width / (float)wi : height /
(float)hi;
Rect bounds = new Rect(0, 0, (int)(scale * wi), (int)(scale * hi));
drawable.setBounds(bounds);
return drawable;
}