web-dev-qa-db-fra.com

Edittext change la couleur de la bordure avec shape.xml

Je crée un fichier shape.xml sous le dossier res -> drawable.

<?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>

Et puis je l'utilise sur une 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"/>

Mais le résultat est que cela ne change pas du tout la couleur de la bordure. Pourquoi qu'est ce qui ne va pas?

32
user3265784

Pourquoi utiliser selector comme balise racine? selector est utilisé pour appliquer plusieurs dessins alternatifs alternatifs à différents états de la vue. Par conséquent, dans ce cas, selector n'est pas nécessaire.

Essayez le code suivant.

<?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>

Il convient également de noter que toutes les entrées de couleur prennent également en charge le canal alpha, ce qui signifie que vous pouvez avoir des couleurs transparentes ou semi-transparentes. Par exemple #RRGGBBAA.

76
Hi I'm Frogatto

Étape 1: Créez un fichier border.xml dans le dossier 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>

Étape 2: Créer un EditText dans un fichier 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" />
11
Manikanta Reddy
<?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>

Vous devez supprimer > this de la balise racine selector, comme ci-dessous.

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

En plus de déplacer votre code de shape à partir de selector.

2
Narendra Baratam

le sélecteur est utilisé pour appliquer plusieurs dessins alternatifs pour différents statuts de la vue. Dans ce cas, le sélecteur n'est pas nécessaire

utilisez plutôt la forme

<?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
Harsh Patel

Utilisez ce code sur XML. j'espère que ce sera du travail 

<?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>
1
Sunny Sultan

j'utilise comme suit pour venir sur cette question

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" />

Et appliqué comme ci-dessous

<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"/>

essayez comme ça ..

1
Shanka Nuwan

Utilisez root tag comme shape au lieu de selector dans votre fichier shape.xml et votre problème sera résolu!

0
gsanskar

C'est un travail pour moi: Drwable-> New-> Drawable Resource File-> create xml file

  <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:Android="http://schemas.Android.com/apk/res/Android">
        xmlns:Android="http://schemas.Android.com/apk/res/Android"
        Android:shape="rectangle">
        <solid Android:color="#e0e0e0" />
        <stroke Android:width="2dp" Android:color="#a4b0ba" />
    </shape>
0
Soumen Das