Ich muss den Hinweis-Text in einem EditTextin Android zentrieren. Wie mache ich das?
Ich muss den Hinweis-Text in einem EditTextin Android zentrieren. Wie mache ich das?
Antworten:
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" />
gravityzählt.
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.
android:ellipsize="start"und es gab keine Veränderung. Hinzufügen android:gravity="center_horizontal"hat den Trick gemacht. Danke noch einmal.
Verwenden Sie dieses XML-Attribut:
Android: Schwerkraft = "Zentrum"
Attribut verwenden
android:gravity="center"
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" />
Ich denke, die Antwort sollte sein:
android:textAlignment="center"
textAlignment hat bei mir funktioniert.
textAlignment="center"
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?
<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
Verwenden Sie android:textAlignment="center"in EditText, es funktioniert für mich
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>
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