Estoy creando dinámicamente botones. Primero los diseñé usando XML, y estoy tratando de tomar el XML a continuación y hacerlo programático.
<Button
android:id="@+id/buttonIdDoesntMatter"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:text="buttonName"
android:drawableLeft="@drawable/imageWillChange"
android:onClick="listener"
android:layout_width="fill_parent">
</Button>
Esto es lo que tengo hasta ahora. Puedo hacer todo menos lo dibujable.
linear = (LinearLayout) findViewById(R.id.LinearView);
Button button = new Button(this);
button.setText("Button");
button.setOnClickListener(listener);
button.setLayoutParams(
new LayoutParams(
android.view.ViewGroup.LayoutParams.FILL_PARENT,
android.view.ViewGroup.LayoutParams.WRAP_CONTENT
)
);
linear.addView(button);
drawableLeft
. Intenté sus sugerencias aquí para establecer un "icono prohibido" cuando hace clic en una carpeta sin permisos de lectura, y funciona. Sin embargo, cuando cambia las carpetas y el adaptador sedrawableLeft
vuelve a cargar, el icono prohibido persiste (es decir, no se vuelve a dibujar). ¿Sabes cómo aplicarnotifyDataSetChanged
también para eldrawableLeft
, sin hacer un bucle? ¡Gracias!Listview
elemento cuando los datos cambian, lo que realmente no se relaciona con esta pregunta o respuesta. Le sugiero que publique una pregunta en lugar de un comentario.setCompoundDrawablesWithIntrinsicBounds( 0, 0, R.drawable.money, 0 )
no funciona, si defino el drawableRight en el layout.xml. Si configuro el ícono original dentroonCreate()
, entonces el cambio funciona. ¿Podría estar relacionado con la API 19?Simplemente puedes probar esto también
fuente
•
Kotlin Version
Use el fragmento a continuación para agregar una izquierda dibujable al botón:
.
•
Important Point in Using Android Vector Drawable
Cuando esté utilizando un vector de Android dibujable y desee tener compatibilidad con versiones anteriores para API por debajo de 21 , agregue los siguientes códigos a:
En el nivel de la aplicación
build.gradle
:En clase de aplicación:
fuente
Context#.getDrawable(resId)
está en desuso, por lo que usarlo puede causar algunos problemas.Para mí funcionó:
fuente
fuente
Hice esto:
fuente
Si está utilizando drawableStart , drawableEnd , drawableTop o drawableBottom ; debes usar " setCompoundDrawablesRelativeWithIntrinsicBounds "
fuente
Trabajó para mi. Para establecer dibujable a la derecha
fuente
como señaló @ Jérémy Reynaud, como se describe en esta respuesta , la forma más segura de establecer el dibujo izquierdo sin cambiar los valores de los otros elementos dibujables (superior, derecho e inferior) es mediante el uso de los valores anteriores del botón con setCompoundDrawablesWithIntrinsicBounds :
Por lo tanto, se conservarán todos sus dibujos anteriores.
fuente
A continuación se muestra la forma de cambiar el color del icono izquierdo en editar texto y configurarlo en el lado izquierdo.
fuente
Puede ser útil:
fuente
Agregar una extensión de Kotlin
Si va a hacer esto con frecuencia, agregar una extensión hace que su código sea más legible. El botón extiende TextView; usa el botón si quieres ser más angosto.
Para usar la extensión, simplemente llame
Cada vez que necesite borrar, no pase un parámetro ni realice otra extensión llamada
removeDrawables
fuente
Prueba esto:
fuente
Prueba esto:
fuente