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:
- Definición de attrs personalizados
- Problema de los recursos extraíbles de Android
- Aplicación multilenguaje: la mejor manera?
- MissingTranslation para el idioma predeterminado ("..." no está traducido en "en")
- Cómo detectar errores de variables de recursos en Android Studio (por ejemplo: "% 1 $ s")
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?
- Localización de las cadenas de apk tanto en inglés como en inglés?
- ¿Se pueden descargar recursos de localización en tiempo de ejecución?
- NullPointerException en android.content.ContextWrapper
- Android 7.0 Nougat recoge cadenas predeterminadas cuando el idioma del dispositivo es en_US
- Dibujos extraídos de la carpeta de recursos erróneos en la rotación
- Biblioteca a recursos de cifrado y descifrado
- Cómo obtener programaticamente lista de idiomas compatibles en un proyecto de Android (dispositivo NOT)
- ¿Hay un patrón de búsqueda de recursos de cadena de Enum para Android?
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