Quiero establecer el fondo dibujable de una vista. Hay dos métodos para esto (por lo que veo): setBackground
y setBackgroundDrawable
.
Cuando lo uso setBackground
, dice que se ha agregado en el nivel 16 de API pero la versión mínima del SDK de mi proyecto es 7. Asumo que no funcionará en nada por debajo de 16, ¿estoy en lo cierto? Pero cuando uso setBackgroundDrawable, dice que está en desuso.
¿Qué se supone que debo usar?
android
view
background
drawable
Pijusn
fuente
fuente
Respuestas:
Está en desuso pero aún funciona, así que puedes usarlo. Pero si quieres ser completamente correcto, solo por la integridad de esto ... Harías algo como lo siguiente:
Para que esto funcione, debe establecer buildTarget api 16 y min build en 7 o algo similar.
fuente
android:minSdkVersion="7" android:targetSdkVersion="17"
, sin embargo, setBackground () sale como error: la llamada requiere el nivel 16 de API (el minimo actual es 7)@TargetApi(Build.VERSION_CODES.JELLY_BEAN) @SuppressWarnings("deprecation") private static void setBg(RelativeLayout layout, BitmapDrawable TileMe) { if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) { layout.setBackgroundDrawable(TileMe); } else { layout.setBackground(TileMe); } }
En su
setBackgroundResource()
lugar, puede usar el que está en el nivel 1 de API.fuente
setBackgroundResource(int)
acepta la identificación del recurso, por lo tanto, debe inflar la vista cada vez para establecer el fondo. No quiero ese comportamiento, suponiendo que ya haya inflado Drawable. ¿Me estoy perdiendo de algo?Parece que actualmente no hay diferencia entre las 2 funciones, como se muestra en el código fuente (crédito a esta publicación ):
así que es solo una decisión de denominación, similar a la de fill-parent vs match-parent.
fuente
Sé que esta es una vieja pregunta, pero tengo una situación similar, y mi solución fue
y luego puedes jugar con el "Drawable", aplicando filtros de color, etc.
fuente
Utilizar
ViewCompat.setBackground(view, background);
fuente
podría usar
setBackgroundResource()
en su lugar, es decirrelativeLayout.setBackgroundResource(R.drawable.back);
esto funciona para mi
fuente
Ahora puede usar cualquiera de esas opciones. Y va a funcionar en cualquier caso. Su color puede ser un código HEX , como este:
Un recurso de color , como este:
O un recurso xml personalizado , así:
¡Espero eso ayude!
fuente
Usando Android Studio 1.5.1 recibí las siguientes advertencias:
y las quejas sobre deprecación
Usando este formato, me deshice de ambos:
fuente
Esto funciona para mí: la vista de vista es su editText, spinner ... etc. E int drawable es su ejemplo de ruta dibujable (R.drawable.yourDrawable)
fuente
Utilice setBackgroundResource (R.drawable.xml / png)
fuente
También tuve este problema, pero hice una solución usando ImageView .
Intente usar un RelativeLayout y agregue un ImageView dentro de él (ancho y alto: fill_parent, scaleType: center).
También asegúrese de que la vista de imagen sea el primer elemento dentro de RelativeLayout, para que actúe como fondo.
fuente
if
cláusula. Ver la respuesta correcta.También puedes hacer esto:
EDITAR: tal como lo señaló @BlazejCzapp , es preferible evitar usar la reflexión si puede resolver el problema sin ella. Tuve un caso de uso donde no pude resolverlo sin reflexionar, pero ese no es el caso anterior. Para obtener más información, visite http://docs.oracle.com/javase/tutorial/reflect/index.html
fuente