quitar - ocultar barra de navegacion android studio
Cómo ocultar la barra inferior en EditText (15)
¡Descubrí lo más curioso! Si lo configura en null
mediante el enlace de datos: android:background="@{null}"
Entonces, no solo se elimina el fondo, sino que la vista aún tiene el relleno que se calculó a partir del fondo predeterminado. Entonces, por alguna razón, la configuración nula diferida no borra el relleno del bg anterior? El relleno en la vista es 4dp izquierdo / superior / derecho, 13dp inferior (desde el nivel 21 del emulador).
Puede que no tenga el mismo resultado final en todos los niveles de API, así que ¡cuidado! Alguien dime si pruebas esto y lo encuentras confiable. (También tenga en cuenta que el relleno inferior sobresale debido a ese subrayado que estaba en el original. Por lo tanto, es probable que desee cambiarlo en el XML o restablecerlo en el código después de cargarlo para que sea igual a la parte superior ...
¿Cómo puedo ocultar la barra inferior de Editar texto (la línea de solicitud con pequeñas remates en los extremos)?
Puede haber una mejor manera de hacer lo que quiero: tengo un diseño con un EditText. Normalmente, esto se muestra bien donde el usuario puede tocarlo y comenzar a ingresar o editar texto.
A veces, sin embargo, me gustaría usar el mismo diseño (simplifica otra lógica) para mostrar los mismos datos de una manera de solo lectura. Quiero que la presentación sea similar: debería tener la misma altura y la misma fuente, pero no la barra inferior.
Como medida de interferencia, voy a implementar esto eliminando EditText y sustituyendo un TextView. Creo que eso dará los resultados deseados, pero parece una forma indirecta y costosa de hacer algo que debería ser fácil al cambiar los atributos.
Aquí hay una forma de ocultarlo, sin arruinar el relleno predeterminado:
fun View.setViewBackgroundWithoutResettingPadding(background: Drawable?) {
val paddingBottom = this.paddingBottom
val paddingStart = ViewCompat.getPaddingStart(this)
val paddingEnd = ViewCompat.getPaddingEnd(this)
val paddingTop = this.paddingTop
ViewCompat.setBackground(this, background)
ViewCompat.setPaddingRelative(this, paddingStart, paddingTop, paddingEnd, paddingBottom)
}
uso:
editText.setViewBackgroundWithoutResettingPadding(null)
Establecer fondo en nulo.
android:background="@null"
Lo que hice fue crear una Forma dibujable y establecerla como fondo:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<padding
android:top="8dp"
android:bottom="8dp"
android:left="8dp"
android:right="8dp" />
<solid android:color="#fff" />
</shape>
Nota: en realidad @color
valores de @dimen
y @color
para los primeros colores, pero aquí he simplificado el archivo de formas para mayor claridad.
Por favor, establezca su fondo de edición de texto como
android:background="#00000000"
Funcionará.
Puede configurar el valor de backgroundTint
EditText
a un color específico. Si establece un color transparente, la barra inferior debería desaparecer.
android:backgroundTint="@color/Transparent"
<color name="Transparent">#00000000</color>
Pero puedes usar esto en Api v21(Lollipop)
o superior
Puedes hacerlo programáticamente usando setBackgroundResource
:
editText.setBackgroundResource(android.R.color.transparent);
Si desea que esto afecte a todas las instancias de EditText y cualquier clase que se herede de él, debe establecer en su tema el valor para el atributo, editTextBackground.
<item name="android:editTextBackground">@drawable/bg_no_underline</item>
Un ejemplo de lo que puedo dibujar es:
<inset xmlns:android="http://schemas.android.com/apk/res/android"
android:insetLeft="@dimen/abc_edit_text_inset_horizontal_material"
android:insetRight="@dimen/abc_edit_text_inset_horizontal_material"
android:insetTop="@dimen/abc_edit_text_inset_top_material"
android:insetBottom="@dimen/abc_edit_text_inset_bottom_material">
<selector>
<item android:drawable="@android:color/transparent"/>
</selector>
</inset>
Esta es una versión ligeramente modificada de lo que es la implementación de diseño de material predeterminada.
Cuando se aplique, hará que todos sus EditText eliminen el subrayado en toda la aplicación, y no tiene que aplicar el estilo a todos y cada uno manualmente.
Si su texto de edición ya tiene un fondo, puede utilizar lo siguiente.
android:textCursorDrawable="@null"
También debe establecer un minWidth, de lo contrario, el cursor desaparecerá si el texto está vacío.
<EditText
android:id="@+id/et_card_view_list_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="30dp"
android:layout_weight="1"
android:inputType="text"
android:text="Name"
android:background="@android:color/transparent"
/>
También puede definir un ESTILO para su editText para que pueda reagrupar todas las propiedades en común. Es muy poderoso si tiene que editar varias veces el texto que necesita para tener el comportamiento
Ponga el código en res / values / styles.xml
<style name="MyEditTextStyle" parent="@android:style/TextAppearance.Widget.EditText"> <item name="android:background">@color/transparence</item> //NO UNDERBAR <item name="android:maxLines">1</item> <item name="android:height">28dp</item> //COMMON HEIGHT </style>
Después de eso solo necesitas llamarlo en tu editText
<EditText
android:id="@+id/edit1"
style="@style/MyEditTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<EditText
android:id="@+id/edit2"
style="@style/MyEditTextStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
Tengo algo como esto que es muy muy útil:
generalEditText.getBackground().mutate().setColorFilter(getResources().getColor(R.color.white), PorterDuff.Mode.SRC_ATOP);
donde generalEditText es mi EditText y el color blanco es:
<color name="white">#ffffff</color>
Esto no eliminará el relleno y su EditText permanecerá como está. Sólo se eliminará la línea en la parte inferior. A veces es más útil hacerlo así.
Si usa android:background="@null"
como muchos sugirieron, pierde el relleno y EditText se vuelve más pequeño. Al menos, fue mi caso.
Una pequeña nota al margen es que si establece el fondo nulo y prueba el código Java que proporcioné anteriormente, su aplicación se bloqueará justo después de ejecutarla. (porque tiene el fondo, pero es nulo). Puede ser obvio, pero creo que es importante señalarlo.
Usando cualquiera de las propiedades:
android:background="@null"
O
android:background="@android:color/transparent"
Trabajó para que yo ocultara el subrayado del EditText.
Sin embargo, tenga en cuenta que luego causa un problema de espaciado con el TextInputLayout que tengo alrededor del EditText
Uso programático: editText.setBackground(null)
Desde xml
use: android:background="@null"
Puede configurar EditText
para tener un EditText
transparente personalizado o simplemente usar
android:background="@android:color/transparent"
o
android:background="@null"