¿Hay alguna forma de crear EditText
que tenga esquinas redondeadas?
280
¿Hay alguna forma de crear EditText
que tenga esquinas redondeadas?
Hay una manera más fácil que la escrita por CommonsWare. Simplemente cree un recurso dibujable que especifique la forma en EditText
que se dibujará:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
Luego, solo haga referencia a este dibujo en su diseño:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="5dip"
android:background="@drawable/rounded_edittext" />
</LinearLayout>
Obtendrás algo como:
Según el comentario de Mark, quiero agregar la forma en que puede crear diferentes estados para su EditText
:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext_states.xml -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_pressed="true"
android:state_enabled="true"
android:drawable="@drawable/rounded_focused" />
<item
android:state_focused="true"
android:state_enabled="true"
android:drawable="@drawable/rounded_focused" />
<item
android:state_enabled="true"
android:drawable="@drawable/rounded_edittext" />
</selector>
Estos son los estados:
<?xml version="1.0" encoding="utf-8"?>
<!-- res/drawable/rounded_edittext_focused.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" android:padding="10dp">
<solid android:color="#FFFFFF"/>
<stroke android:width="2dp" android:color="#FF0000" />
<corners
android:bottomRightRadius="15dp"
android:bottomLeftRadius="15dp"
android:topLeftRadius="15dp"
android:topRightRadius="15dp"/>
</shape>
Y ... ahora, EditText
debería verse así:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
android:background="@drawable/rounded_edittext_states"
android:padding="5dip"/>
</LinearLayout>
EditText
tiene diferentes fondos para enfocado, deshabilitado, presionado y seleccionado, además del predeterminado. Enfocado, en particular, puede ser importante en el futuro si tenemos algunos dispositivos Android que carecen de pantallas táctiles, como Google TV.android:radius
lugar de definir 4 líneasAquí está la misma solución (con algún código de bonificación adicional) en un solo archivo XML:
Luego, simplemente configura el atributo de fondo para editar el archivo Texttext_itated_corners.xml:
fuente
topRightRadius
ytopLeftRadius
las cuatro esquinas terminan redondeadas. Por favor ayuda. :(Prueba este,
1.Cree el archivo rounded_edittext.xml en su Drawable
2. Aplicar fondo para su EditText en el archivo xml
3. Obtendrá una salida como esta
fuente
Gracias por la respuesta de Norfeldt. He realizado un ligero cambio en su gradiente para un mejor efecto de sombra interior.
Se ve muy bien en un diseño de fondo claro.
fuente
Desde mi punto de vista, ya tiene esquinas redondeadas.
En caso de que desee que sean más redondeados, deberá:
EditText
fondo (que se encuentra en su SDK)StateListDrawable
recurso XML que combina esosEditText
fondos en un soloDrawable
y modifíquelo para que apunte a sus archivos PNG más completos de nueve parchesStateListDrawable
como fondo para suEditText
widgetfuente
Si solo desea que la esquina no se curve todo el extremo, use el siguiente código.
Solo curvará los cuatro ángulos de
EditText
.fuente
Solo para agregar a las otras respuestas, descubrí que la solución más simple para lograr las esquinas redondeadas era establecer lo siguiente como fondo para su Edittext.
fuente
Con la Biblioteca de componentes de material puede usar
MaterialShapeDrawable
para dibujar formas personalizadas .Con un
EditText
puedes hacer:Luego crea un
MaterialShapeDrawable
:Requiere la versión 1.1.0 de la biblioteca.
fuente