2014-12-30 4 views
24

Realizzo un file shape.xml in res -> cartella drawable.Edittext cambia il colore del bordo con shape.xml

<?xml version="1.0" encoding="utf-8"?> 
<selector 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
     <solid android:color="#ffffff" /> 
     <stroke android:width="1dip" android:color="#ff9900" /> 
</selector> 

E poi lo uso su un EditText:

<EditText 
    android:layout_width="300dp" 
    android:layout_height="50dp" 
    android:id="@+id/editText" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:layout_marginTop="300dp" 
    android:hint="@string/hint" 
    android:paddingLeft="10dp" 
    android:paddingRight="10dp" 
    android:singleLine="true" 
    android:background="@drawable/shape"/> 

Ma il risultato è che non cambia il colore del bordo a tutti. Perchè cosa c'è che non va?

+0

La mia risposta di seguito ha risolto il problema? –

+0

Nel caso in cui anche qualcun altro si scontrino con esso, non è possibile impostare "android: backgroundTint" per farlo funzionare –

risposta

63

Perché utilizzare selector come tag radice? selector viene utilizzato per applicare più drawable alternativi per diversi stati della vista, quindi in questo caso non è necessario selector.

Provare il seguente codice.

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 

    <!-- Background Color --> 
    <solid android:color="#ffffff" /> 

    <!-- Border Color --> 
    <stroke android:width="1dp" android:color="#ff9900" /> 

    <!-- Round Corners --> 
    <corners android:radius="5dp" /> 

</shape> 

Inoltre vale la pena ricordare che tutte le unità di colore supportano canale alfa pure, il che significa che si può avere colori trasparenti o semi-trasparenti. Ad esempio #RRGGBBAA.

+0

Questo ha funzionato per me! – Emzor

0

Utilizzare root tag come shape anziché selector nel file shape.xml e risolverà il problema!

1

selettore è usato per applicare più drawable alternativi per diverso status della vista, quindi in questo caso, non v'è alcuna necessità di selettore

invece utilizzare forma

<?xml version="1.0" encoding="utf-8"?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="#ffffff" /> 
    <stroke android:width="1dip" android:color="#ff9900" /> 
</shape> 
1

io uso come seguendo per oltre arrivato questa materia

edittext_style.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" 
android:thickness="0dp" 
android:shape="rectangle"> 
<stroke android:width="1dp" 
     android:color="#c8c8c8"/> 
<corners android:radius="0dp" /> 

e applicato come muggito

<EditText 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:inputType="textPersonName" 
      android:ems="10" 
      android:id="@+id/editTextName" 
      android:background="@drawable/edit_text_style"/> 

provare come questo ..

2
<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    android:shape="rectangle"> 
    <solid android:color="#ffffff" /> 
    <stroke android:width="1dip" android:color="#ff9900" /> 
</selector> 

È necessario rimuovere > questo da selector tag principale, come qui di seguito

<selector xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="rectangle"> 

Oltre come spostare il codice a shape da selector.

8

Passaggio 1: Creare una border.xml nella cartella Drawable

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 

    <corners 
     android:radius="2dp" 
     /> 
    <solid android:color="#ffffff" 
     /> 
    <stroke 
     android:width="2dip" 
     android:color="#000" /> 
</shape> 

Passaggio 2: Creare un EditText in file XML

<EditText 
     android:id="@+id/etEmail" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_marginLeft="25dp" 
     android:layout_marginTop="25dp" 
     android:hint="Enter Email" 
     android:padding="10dp" 
     android:layout_marginRight="25dp" 
     android:background="@drawable/border" 
     android:inputType="textEmailAddress" 
     android:singleLine="true" /> 
0

Usa questo codice su XML. spero che funzionerà

<?xml version="1.0" encoding="utf-8" ?> 
    <shape xmlns:android="http://schemas.android.com/apk/res/android" 
      android:thickness="0dp" 
      android:shape="rectangle"> 
     <stroke android:width="3dp" 
      android:color="#4799E8"/> 
     <corners android:radius="5dp" /> 
     <gradient 
     android:startColor="#C8C8C8" 
     android:endColor="#FFFFFF" 
     android:type="linear" 
     android:angle="270"/> 
    </shape>