webentwicklung-frage-antwort-db.com.de

Edittext ändert die Rahmenfarbe mit shape.xml

Ich mache eine shape.xml-Datei unter res -> drawable ordner.

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

Und dann benutze ich es für eine 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"/>

Das Ergebnis ist jedoch, dass die Rahmenfarbe überhaupt nicht geändert wird. Warum was ist falsch?

32
user3265784

Warum selector als Root-Tag verwenden? selector wird verwendet, um mehrere alternative Drawables für verschiedene Ansichtszustände anzuwenden. In diesem Fall ist selector nicht erforderlich.

Versuchen Sie den folgenden Code.

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

Es ist auch erwähnenswert, dass alle Farbeinträge auch Alphakanal unterstützen, was bedeutet, dass Sie transparente oder semitransparente Farben haben können. Zum Beispiel #RRGGBBAA.

76
Hi I'm Frogatto

Schritt 1: Erstellen Sie eine border.xml im Drawable-Ordner

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

Schritt 2: Erstellen Sie einen EditText in einer XML-Datei

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

Sie müssen > dies aus dem selector-Root-Tag entfernen, wie unten beschrieben

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

Verschieben Sie außerdem Ihren Code von shape in selector.

2

mit dem Selector können Sie mehrere alternative Drawables für verschiedene Ansichtsstatus anwenden. In diesem Fall ist kein Selector erforderlich

verwenden Sie stattdessen die Form

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

Verwenden Sie diesen Code für XML. Ich hoffe es wird funktionieren 

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

ich verwende diese Angelegenheit wie folgt

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

Und als gebrüllt angewendet

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

versuchen Sie es so ..

1
Shanka Nuwan

Der folgende Code kann Ihnen dabei helfen. Wenn Sie einen Strich verwenden, können Sie den Rand im Text bearbeiten und auch die Farbe ändern, wie unten gezeigt ...

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:padding="10dp"
Android:shape="rectangle">
<stroke
    Android:width="2dp"
    Android:color="@color/secondary" />
<corners
    Android:bottomLeftRadius="10dp"
    Android:bottomRightRadius="10dp"
    Android:topLeftRadius="10dp"
    Android:topRightRadius="10dp" />

Fügen Sie dies als Hintergrund hinzu, um Text zu bearbeiten. Vielen Dank!

1

Verwenden Sie root tag als shape anstelle von selector in Ihrer shape.xml-Datei, um das Problem zu lösen!

0
gsanskar

Dies ist für mich Arbeit: Drwable-> New-> Drawable Resource File-> XML-Datei erstellen

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