Programe de forma programática el recurso de fondo de EditText en campo transparente

Esta es la forma predeterminada en la que aparece un EditText al crear uno:

Esto es lo que parece después de cambiar el fondo de la misma:

Introduzca aquí la descripción de la imagen

Para cambiar el fondo a la imagen arriba, agrego la siguiente característica de EditText a mi EditText en mi archivo de XML:

android:background="@android:drawable/edit_text" 

Lo que quiero hacer es hacer lo que he hecho anteriormente en mi clase de actividad (dando al usuario una opción para seleccionar entre el estilo clásico y el estilo transparente / nuevo).

Así que esto – necesito que la gente llene el /*...*/

 if (classicTextbox()) { // the blocky white one editText.setTextColor(Color.BLACK); editText.setBackgroundResource(android.R.drawable.edit_text); } else { // the new transparent one editText.setTextColor(Color.WHITE); editText.setBackgroundResource(/*...*/); } 

Entonces, ¿cómo puedo cambiar de nuevo al nuevo estilo transparente de EditText?

Terminé tratando de guardar el Drawable original cuando el diseño se abre y, a continuación, establecer el recurso de fondo de esa manera siempre que quiera. Me gusta esto:

En mi método onCreate :

 Drawable originalDrawable = editText.getBackground(); 

Y luego para configurarlo:

 // need to use .setBackground and .setBackgroundDrawable depending on the // android version because .setBackgroundDrawable is depreciated int sdk = android.os.Build.VERSION.SDK_INT; int jellyBean = android.os.Build.VERSION_CODES.JELLY_BEAN; if(sdk < jellyBean) { editText.setBackgroundDrawable(originalDrawable); } else { editText.setBackground(originalDrawable); } 

Todavía animo más respuestas porque no me gusta esta solución.


Fuentes:

¿Cómo volver al estilo predeterminado en EditText si aplico un fondo?

SetBackground vs setBackgroundDrawable (Android)

El fondo predeterminado de holo EditText es: edit_text_holo_dark . Esa es la versión oscura. También hay la contrapartida a eso, la versión ligera: edit_text_holo_light .

edit_text_holo_dark.xml :

 <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_multiline="true" android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/textfield_multiline_default_holo_dark" /> <item android:state_multiline="true" android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/textfield_multiline_disabled_holo_dark" /> <item android:state_multiline="true" android:state_enabled="true" android:state_focused="true" android:drawable="@drawable/textfield_multiline_activated_holo_dark" /> <item android:state_multiline="true" android:state_enabled="true" android:state_activated="true" android:drawable="@drawable/textfield_multiline_focused_holo_dark" /> <item android:state_multiline="true" android:state_enabled="true" android:drawable="@drawable/textfield_multiline_default_holo_dark" /> <item android:state_multiline="true" android:state_focused="true" android:drawable="@drawable/textfield_multiline_disabled_focused_holo_dark" /> <item android:state_multiline="true" android:drawable="@drawable/textfield_multiline_disabled_holo_dark" /> <item android:state_window_focused="false" android:state_enabled="true" android:drawable="@drawable/textfield_default_holo_dark" /> <item android:state_window_focused="false" android:state_enabled="false" android:drawable="@drawable/textfield_disabled_holo_dark" /> <item android:state_enabled="true" android:state_focused="true" android:drawable="@drawable/textfield_activated_holo_dark" /> <item android:state_enabled="true" android:state_activated="true" android:drawable="@drawable/textfield_focused_holo_dark" /> <item android:state_enabled="true" android:drawable="@drawable/textfield_default_holo_dark" /> <item android:state_focused="true" android:drawable="@drawable/textfield_disabled_focused_holo_dark" /> <item android:drawable="@drawable/textfield_disabled_holo_dark" /> </selector> 

Tenga en cuenta que estos elementos holo solo están disponibles en Android HC +.

  • Cómo corregir: android.app.RemoteServiceException: Notificación incorrecta enviada desde el paquete *: No se pudo crear el icono: StatusBarIcon
  • Cómo obtener programaticamente lista de idiomas compatibles en un proyecto de Android (dispositivo NOT)
  • Extraño error en R.java, incluso después de limpiar el proyecto: "Los subrayados sólo se pueden usar con el nivel de fuente 1.7 o superior"
  • ¿Diferencia entre @string y @ + string?
  • ¿Usando la cadena del recurso XML en el interruptor?
  • La ejecución falló para la tarea ': app: processDebugResources' incluso con las últimas herramientas de compilación
  • El valor del recurso xml de entero de Android no cambia al cambiar entre retrato y paisaje
  • Obtener el id de recurso para la referencia dibujable utilizada en el atributo de estilo
  • Acceso a recursos sin contexto
  • ¿Hay un patrón de búsqueda de recursos de cadena de Enum para Android?
  • Intentando crear un proyecto después de agregar la carpeta values-21 y está mostrando error
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.