it-swarm.com.de

androidform mit unterem Strich

Ich muss ein Android-Shape erstellen, sodass nur der untere Strich (eine gestrichelte Linie) angezeigt wird. Wenn ich Folgendes versuche, halbiert der Strich die Form durch die Mitte. Weiß jemand, wie man es richtig macht? Der Strich muss die unterste Linie/Grenze sein. Ich verwende die Form als Hintergrund für eine Textansicht. Bitte vergiss nicht warum ich es brauche.

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

    <item>
        <shape Android:shape="rectangle" >
            <solid Android:color="#1bd4f6" />
        </shape>
    </item>

    <item>
        <shape Android:shape="line" >
            <padding Android:bottom="1dp" />

            <stroke
                Android:dashGap="10px"
                Android:dashWidth="10px"
                Android:width="1dp"
                Android:color="#ababb2" />
        </shape>
    </item>

</layer-list>
98
Cote Mounyo

Es ist eine Art Hack, aber ich denke, das ist wahrscheinlich der beste Weg, es zu tun. Die gestrichelte Linie wird unabhängig von der Höhe immer unten angezeigt. 

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <item>
        <shape Android:shape="rectangle" >
            <solid Android:color="#1bd4f6" />
        </shape>
    </item>

    <item Android:top="-2dp" Android:right="-2dp" Android:left="-2dp">
        <shape>
            <solid Android:color="@Android:color/transparent" />
            <stroke
                Android:dashGap="10px"
                Android:dashWidth="10px"
                Android:width="1dp"
                Android:color="#ababb2" />
        </shape>
    </item>

</layer-list>

Erläuterung:

Die zweite Form ist ein transparentes Rechteck mit einer gestrichelten Kontur. Der Schlüssel, um die Umrandung nur am unteren Rand erscheinen zu lassen, liegt in den negativen Rändern der anderen Seiten. Diese negativen Ränder "schieben" die gestrichelte Linie außerhalb des gezeichneten Bereichs auf diesen Seiten und lassen nur die Linie am unteren Rand zurück. Ein möglicher Nebeneffekt (den ich nicht ausprobiert habe) ist, dass bei Ansichten, die außerhalb ihrer eigenen Grenzen liegen, die Grenzen des negativen Randes sichtbar werden.

280
Krylez

Das macht den Trick ...

<item >
    <shape Android:shape="rectangle">
        <solid Android:color="#YOUR_BOTTOM_LINE_COLOR"/>
    </shape>
</item>

<item Android:bottom="1.5dp">
    <shape Android:shape="rectangle">
        <solid Android:color="#YOUR_BG_COLOR"/>
    </shape>
</item>
44
Jongz Puangput
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item
        Android:top="-6dp"
        Android:left="-6dp"
        Android:right="-6dp"
        Android:bottom="0dp">

        <shape Android:shape="rectangle">
            <solid Android:color="#88FFFF00"/>
            <stroke
                Android:width="5dp"
                Android:color="#FF000000"/>
        </shape>
    </item>
</layer-list>
36
Anonan

Diese Antwort ist für die Google-Suchenden, die den gepunkteten unteren Rand von EditText wie hier anzeigen möchten.

 sample

Erstellen Sie dotted.xml im Ordner drawable und fügen Sie diese ein

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item
        Android:bottom="1dp"
        Android:left="-2dp"
        Android:right="-2dp"
        Android:top="-2dp">
        <shape Android:shape="rectangle">
            <stroke
                Android:width="0.5dp"
                Android:color="@Android:color/black" />    
            <solid Android:color="#ffffff" />
            <stroke
                Android:width="1dp"
                Android:color="#030310"
                Android:dashGap="5dp"
                Android:dashWidth="5dp" />
            <padding
                Android:bottom="5dp"
                Android:left="5dp"
                Android:right="5dp"
                Android:top="5dp" />
        </shape>
    </item>
</layer-list>

Dann setzen Sie einfach das Android:background-Attribut auf dotted.xml, das wir gerade erstellt haben. Ihr EditText sieht so aus.

<EditText
    Android:id="@+id/editText"
    Android:layout_width="match_parent"
    Android:layout_height="wrap_content"
    Android:text="Some Text"
    Android:background="@drawable/dotted" />
14
Shree Krishna

Ich empfinde es als unkompliziert, ohne diese negativen Polsterungen oder Störche.

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">

    <item Android:drawable="@color/main_bg_color"/>
    <item Android:gravity="bottom">
        <shape Android:shape="rectangle">
            <size Android:height="5dp"/>
            <solid Android:color="@color/bottom_bar_color"/>
        </shape>
    </item>
</layer-list>
9
Simon K. Gerges

Ich denke, Sie brauchen keine Form, wenn ich Sie verstanden habe.

Wenn Sie wie im folgenden Bild aussehen, verwenden Sie das folgende Layout.

enter image description here

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
xmlns:tools="http://schemas.Android.com/tools"
Android:layout_width="match_parent"
Android:layout_height="match_parent" >

<RelativeLayout
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_centerInParent="true"
    Android:background="#1bd4f6"
    Android:paddingBottom="4dp" >

    <TextView
        Android:layout_width="200dp"
        Android:layout_height="wrap_content"
        Android:background="#ababb2"
        Android:padding="5dp"
        Android:text="Hello Android" />
 </RelativeLayout>

 </RelativeLayout>

EDIT

wenn Sie mit diesen Eigenschaften spielen, erhalten Sie ein Ergebnis

    Android:top="dimension"
    Android:right="dimension"
    Android:bottom="dimension"
    Android:left="dimension"

versuchen Sie es so

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

<item>
    <shape Android:shape="rectangle" >
        <solid Android:color="#1bd4f6" />
    </shape>
</item>

<item Android:top="20px"
    Android:left="0px">
    <shape Android:shape="line"  >
        <padding Android:bottom="1dp" />

        <stroke
            Android:dashGap="10px"
            Android:dashWidth="10px"
            Android:width="1dp"
            Android:color="#ababb2" />
    </shape>
</item>

</layer-list>
7
Ketan Ahir

Versuchen Sie es mit dem folgenden XML-Code:

    <layer-list>
        <item Android:top="-2dp" Android:right="-2dp" Android:left="-2dp">
            <shape>
                <solid Android:color="@Android:color/transparent" />
                <stroke
                    Android:width="1dp"
                    Android:color="#fff" />
            </shape>
        </item>
    </layer-list>
6

Eine einfache Lösung:

Erstellen Sie eine zeichnbare Datei als edittext_stroke.xml im drawable-Ordner . Fügen Sie den folgenden Code hinzu:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:shape="line"
   >
    <stroke
        Android:width="1dp"
        Android:color="@Android:color/white" >
    </stroke>
</shape>

Fügen Sie in der Layout-Datei den Zeichnungssatz als edittext hinzu 

Android: drawableBottom = "@ drawable/edittext_stroke"

<EditText
      Android:textColor="@Android:color/white"
      Android:layout_width="match_parent"
      Android:layout_height="wrap_content"
      Android:drawableBottom="@drawable/edittext_stroke"
      />
5
adhi

Normalerweise für ähnliche Aufgaben - Ich habe eine Ebenenliste erstellt, die wie folgt gezeichnet werden kann:

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item>
        <shape Android:shape="rectangle">
        <solid Android:color="@color/underlineColor"/>
        </shape>
    </item>
<item Android:bottom="3dp">
    <shape Android:shape="rectangle">
        <solid Android:color="@color/buttonColor"/>
    </shape>
</item>

Die Idee ist, dass Sie zuerst das Rechteck mit underlineColor zeichnen und dann darüber ein weiteres Rechteck mit der tatsächlichen buttonColor zeichnen, jedoch bottomPadding anwenden. Es funktioniert immer.

Aber wenn ich buttonColor brauchte, um transparent zu sein, konnte ich das obige Zeichen nicht verwenden. Ich habe eine weitere Lösung gefunden

<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
<item>
    <shape Android:shape="rectangle">
        <solid Android:color="@Android:color/transparent"/>
    </shape>
</item>

<item Android:drawable="@drawable/white_box" Android:gravity="bottom"     Android:height="2dp"/>
</layer-list>

(Wie Sie hier sehen können, ist die mainButtonColor transparent und white_box ist ein einfaches Rechteck, das mit einem weißen Körper gezeichnet werden kann.)

4
Lanitka

es ist vollständig transparenter Edittext mit transparentem Hintergrund.

<item>
    <shape Android:shape="rectangle" >
        <solid Android:color="@color/transparent" />
    </shape>
</item>

<item Android:top="-3dp" Android:right="-3dp" Android:left="-3dp">
    <shape>
        <solid Android:color="@Android:color/transparent" />
        <stroke

            Android:width="2dp"
            Android:color="@color/bottomline" />
    </shape>
</item>

0
Samet öztoprak

Das hat für mich am besten funktioniert:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android">
    <item Android:top="-5dp" Android:left="-5dp" Android:right="-5dp" Android:bottom="0dp">
        <shape Android:shape="rectangle">
            <stroke Android:width="4dp" Android:color="#ff0000"/>
        </shape>
    </item>
</layer-list>

Zeigt nur die Zeile unten an. Sie können einfach die Strichbreite ändern, um die gewünschte Größe festzulegen, und auch die obere, linke, rechte Seite entsprechend aktualisieren.

0
Sileria

verwenden Sie diese XML, ändern Sie die Farbe mit Ihrer Wahl.

<item>
    <layer-list>
        <item>
            <shape>
                <solid Android:color="@color/gray_500" />

            </shape>
        </item>
        <!-- CONTENT LAYER -->
        <item Android:bottom="2dp" >
            <shape>
                <solid Android:color="#ffffff" />
            </shape>
        </item>
    </layer-list>
</item>

Wenn Sie programmgesteuert möchten

public static Drawable getStorkLineDrawable(@ColorInt int colorStrok, int    iSize, int left, int top, int right, int bottom)

{
    GradientDrawable gradientDrawable = new GradientDrawable();
    gradientDrawable.setShape(GradientDrawable.RECTANGLE);
    gradientDrawable.setStroke(iSize, colorStrok);
    LayerDrawable layerDrawable = new LayerDrawable(new Drawable[]{gradientDrawable});
    layerDrawable.setLayerInset(0, left, top, right, bottom);
    return layerDrawable;
}

nennen Sie diese Methode gerne 

  Drawable yourLineDrawable=  getStorkLineDrawable(yourColor, iSize, -iSize, -iSize, -iSize, 0);
0
sourav pandit