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:
- Evitar Android Lint se queja de cadena no traducida
- ¿Reutiliza Android las imágenes cargadas desde el recurso?
- Localización dinámica de aplicaciones para Android
- ¿Se pueden descargar recursos de localización en tiempo de ejecución?
- ¿Hay alguna diferencia en el uso de Context.getText y Context.getResources.getText?
Esto es lo que parece después de cambiar el fondo de la misma:
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?
- Establecer LinearLayout Orientación utilizando referencias en lugar de layout-land (sólo xml)
- Cómo detectar errores de variables de recursos en Android Studio (por ejemplo: "% 1 $ s")
- ¿Qué es "android:" prefijo en el módulo android framework-res
- Utilizar Locale para obligar a Android a utilizar un archivo strings.xml específico para un idioma no compatible
- Android cómo obtener acceso a los recursos crudos que poner en la carpeta res?
- Definición de attrs personalizados
- Tamaño de pantalla de Android, valores-v11, valores-v14
- Biblioteca a recursos de cifrado y descifrado
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 +.
- Utilizar `SharedPreferences` para almacenar el token de autenticación
- Validación de esquema de Android