2012-07-14 24 views
10

me gustaría saber cómo cambiar el color del borde de la vista en EditarTexto androide a otra cosa ...Cambiar el color del borde EditarTexto

Este es mi punto de vista EditarTexto:

<EditText 
    android: 
    android:id="@+id/codeEditText" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_below="@+id/btnEqual" 
    android:layout_marginTop="20dp" 
    android:ems="10" 
    android:gravity="top|left" 
    android:inputType="textMultiLine|textNoSuggestions" 
    android:scrollbars="vertical" 
    android:singleLine="false" > 

Gracias por adelantado.

Respuesta

17

Tendrá que crear/modificar su propia imagen de NinePatch para reemplazar la imagen predeterminada y usarla como fondo de su EditText. Si busca en su carpeta SDK, debajo de su plataforma, luego res/drawable, debe encontrar la imagen NinePatch para el estado de enfoque EditText. Si eso es todo lo que desea cambiar, puede colocarlo en Photoshop, o en el software de edición de imágenes que más le guste, y cambiar el color naranja al color que elija. A continuación, guarde en la carpeta que estirable, y construir una nueva StateListDrawable, por ejemplo, algo como el siguiente:

<?xml version="1.0" encoding="utf-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    > 
    <item 
     android:state_pressed="true" 
     android:drawable="@android:drawable/edittext_pressed" 
     /> <!-- pressed -->  
    <item 
     android:state_focused="true" 
     android:drawable="@drawable/edittext_focused_blue" 
     /> <!-- focused -->  
    <item 
     android:drawable="@android:drawable/edittext_normal" 
     /> <!-- default --> 
</selector> 

No sé improviso los nombres reales de los NinePatches por defecto para el EditarTexto, por lo que reemplazar a los que sea necesario , pero la clave aquí es simplemente usar las imágenes @android:drawable para las que no ha modificado (o puede copiarlas en la carpeta dibujable de su proyecto), y luego usar su dibujable modificado para su estado enfocado.

entonces se puede establecer esta StateListDrawable como el fondo para su TextView, así:

<TextView 
    android:background="@drawable/edittext_modified_states" 

En algunas versiones del sistema operativo, es posible que también tenga que copiar los no modificados imágenes normales del estado en las aplicaciones de la carpeta estirable para obtener este trabajo. Por lo tanto, en las carpetas dibujables de su aplicación tiene la imagen de estado de enfoque modificada y también otras imágenes de estado originales no modificadas.

+0

+ 1, está allí cualquier estado para ** edittxview.setError ("Error"); ** como androide: state_pressed = "true" (android: state_seterror = "true")! ¡Solo quiero cambiar el color del borde cuando se activa la alerta de validación setError! –

+0

esto es lo que estoy buscando [change-background-of-edittexts-error-message] (http://stackoverflow.com/questions/14127710/change-background-of-edittexts-error-message) –

0

Tiene que anular la función onDraw para hacerlo. Y podrás hacerlo en una línea. Aquí hay un buen ejemplo en this presentation en la diapositiva 66.

+1

Esto dibuja un rectángulo sobre el borde del texto de edición. El OP quiere cambiar el color en el enfoque. –

7

Hay un gran generador de widgets que podría hacer todo el trabajo por usted, funcionó muy bien para mí.

Simplemente tiene que elegir su color y el widget que desea (EditText por ejemplo), entonces obtendrá un archivo xml en el directorio dibujable, debe establecer este xml como fondo de su Widget y su Done!

http://android-holo-colors.com/

Cuestiones relacionadas