Wie zentriere ich den Hinweistext in einem EditText in Android?


74

Ich muss den Hinweis-Text in einem EditTextin Android zentrieren. Wie mache ich das?


5
Verwenden Sie das XML-Attribut android :
vity

Ja, dies wird benötigt, um den Text genau in der Mitte zu positionieren.
Code Droid

Antworten:


80

Damit die Zentrierung von Hinweistext mit EditText funktioniert, müssen Sie sicherstellen, dass android: ellipsize = "start" definiert ist. Ich weiß nicht, warum das funktioniert, aber es funktioniert.

Beispiel aus persönlichem Code gezogen:

<EditText
    android:id="@+id/player2Name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:ellipsize="start"
    android:gravity="center_horizontal"
    android:hint="@string/player2_name"
    android:inputType="textCapWords|textPersonName"
    android:singleLine="true" />

Vielen Dank für die Veröffentlichung und willkommen bei StackOverflow! Ja, ellipsize = "start" wirkt sich darauf aus. Ich weiß auch nicht warum. Ohne es zeigt sich der Hinweis für mich nicht.
Code Droid

4
Ich denke, ich bin zu spät hier, aber heute habe ich diese Antwort gesehen und darauf hingewiesen, dass hier kein Android benötigt wird: ellipsize = "start", um ein Hinweiszentrum zu erstellen, AFAIK. Siehe meine Antwort. Vielleicht ist es auch nützlich.
Robi Kumar Tomar

1
Wie in anderen Antworten angegeben, ist es Android: Gravity = "Center" (oder eine ähnliche Variante), das den Text zentriert, nicht die Ellipsengröße.
hBrent

Warum wird diese Antwort akzeptiert? Ich nehme an, nur gravityzählt.
CoolMind

Dies könnte versehentlich bei älteren Android-Geräten funktionieren, jetzt funktioniert es nicht mehr.
Zeiger Null

38

Erzeugt tatsächlich android:gravity="center_horizontal"den gewünschten Zentrierungseffekt. Ebenso können Sie android:gravity="start"Hinweistext am Anfang der EditText-Ansicht usw. einfügen.


2
Vielen Dank. Ich habe es mit dem versucht android:ellipsize="start"und es gab keine Veränderung. Hinzufügen android:gravity="center_horizontal"hat den Trick gemacht. Danke noch einmal.
Noah Herron

35

Verwenden Sie dieses XML-Attribut:

Android: Schwerkraft = "Zentrum"


1
Ja, dies ist notwendig, um den Text zu zentrieren. sowohl vertikal als auch horizontal.
Code Droid


8

Ich habe diesen Code unter allen Umständen verwendet und er funktioniert perfekt ohne Android: ellipsize = "start" , um einen Hinweis in der Mitte zu machen.

  <EditText
    android:id="@+id/player2Name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_horizontal"
    android:hint="robi"
    android:inputType="text" />

5

Ich denke, die Antwort sollte sein:

android:textAlignment="center"

Ich stimme zu, dies ist die richtige Antwort, um nur den Text und nicht den Hinweis zu zentrieren.
0101100101


4

Leider hat mir keine der Antworten geholfen, den in LTR-Sprache geschriebenen Hinweis auszurichten, während die Layoutorientierung RTL war. Ich brauchte ein solches Layout in einer Art Übersetzungsanwendung, damit Überlagerungssymbole den RTL-Text nicht beeinträchtigen. Dieser Trick funktionierte jedoch nicht mit Hinweisen, obwohl noch kein Text vorhanden war (Symbole wurden über dem Hinweis angezeigt), und ich kam zu der folgenden Java-Lösung für das Layoutproblem:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
. . .
        if (isRightToLeft()){
            EditText guess = (EditText) rootView.findViewById(android.R.id.text1);
            CharSequence hint = "\u200F" + guess.getHint();
            guess.setHint(hint);
        }
. . .
}

Der Trick bestand darin, von rechts nach links eine Zeichenfolge von links nach rechts vorzustellen. Und es scheint zu funktionieren, aber kennt jemand eine elegantere Lösung?


4
<android.support.design.widget.TextInputLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginEnd="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp">

        <android.support.design.widget.TextInputEditText
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:hint="ENTER PIN"
            android:inputType="numberPassword" />
    </android.support.design.widget.TextInputLayout>

Hinweis: Im Tag TextInputEditText die Eigenschaft

Android: Schwerkraft = "Zentrum"

Dies macht es aus, den Text in der Mitte einschließlich des Hinweistextes auszurichten




2

Ich benutze das und habe für mich gearbeitet

android:gravity="Left|center_vertical"

1

Das hat bei mir funktioniert:

<android.support.design.widget.TextInputLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:id="@+id/nombreslayoutinput">
    <EditText
        android:id="@+id/nombreslayout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="@string/nombres"
        android:layout_centerInParent="true"
        android:gravity="center|center_vertical"
        android:ellipsize="start"
        android:inputType="textCapWords|textPersonName"

        />
</android.support.design.widget.TextInputLayout>

0

Mein Problem war, dass das EditTextnicht groß genug war, um genau in das übergeordnete Element zu passen ( FrameLayoutin meinem Fall). android:gravity="center"Wenn Sie also nur (center_vertical, horizontal, start oder was auch immer) verwenden, passt es einfach EditTextin das übergeordnete Element und nicht in das übergeordnete Element , also ich musste das EditTextInnere seines Elternteils zentrieren mit:

android:layout_gravity="center"

pd: Ich habe android:background="@android:color/transparent"die hässliche Unterstreichung im EditTextHinweis versteckt

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.