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?

Code Droid
quelle
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" />
Kyau
quelle
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.

Array
quelle
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"

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

Attribut verwenden

android:gravity="center"
Amr wütend
quelle
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" />
Robi Kumar Tomar
quelle
5

Ich denke, die Antwort sollte sein:

android:textAlignment="center"
Abhishek Mathur
quelle
Ich stimme zu, dies ist die richtige Antwort, um nur den Text und nicht den Hinweis zu zentrieren.
0101100101
5

textAlignment hat bei mir funktioniert.

textAlignment="center"
DrNachtschatten
quelle
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?

Cool weich
quelle
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

Ishimwe Aubain Consolateur
quelle
4

benutze dies: android :vity = "center"

Raj Bedi
quelle
3

Verwenden Sie android:textAlignment="center"in EditText, es funktioniert für mich

Pritesh Vishwakarma
quelle
2

Ich benutze das und habe für mich gearbeitet

android:gravity="Left|center_vertical"
Ali Khaki
quelle
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>
Federico Dassatti
quelle
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

Tincho825
quelle