Jak wyśrodkować tekst poziomo i pionowo w a TextView
, aby pojawił się dokładnie na środku TextView
w Android
?
Jak wyśrodkować tekst poziomo i pionowo w a TextView
, aby pojawił się dokładnie na środku TextView
w Android
?
Odpowiedzi:
Zakładam, że używasz układu XML.
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/**yourtextstring**"
/>
Możesz także użyć grawitacji center_vertical
lub center_horizontal
zgodnie z potrzebami.
i jak skomentował @stealthcopter w java: .setGravity(Gravity.CENTER);
android:gravity="center"
). Nadal pokazuje się po lewej stronie ekranu. :(
android:layout_gravity="center"
, co robi coś innego.
android:gravity="center"
To załatwi sprawę
Możesz również skonfigurować go dynamicznie, używając:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:layout_centerInParent="true"
Działa to w połączeniu z RelativeLayout, w którym wysokość i szerokość układu są ustawione na wrap_content.
TextView
. Tekst będzie w pełnej szerokości i będzie zawierał wiele wierszy, a LEWO będzie wyjustowany TextView
. Na wyświetlaczu pojawi się z wyrównaniem do lewej. Powinieneś użyć „grawitacji” określonej w innych odpowiedziach.
Zastosuj grawitację:
TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);
Dla pionu:
txtView.setGravity(Gravity.CENTER_VERTICAL);
W XML:
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/Hello_World"
/>
Można to zrobić na dwa sposoby.
Pierwszy w kodzie XML. Musisz zwrócić uwagę na Gravity
Atrybut. Ten atrybut można również znaleźć w Edytorze graficznym; może być łatwiejsze niż EDYTOR XML.
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
android:text="Your Text"
/>
W przypadku konkretnego scenariusza wartości grawitacji będą następujące:
center_vertical|center_horizontal
W edytorze graficznym znajdziesz wszystkie możliwe wartości, a nawet zobaczysz ich wyniki.
Jeśli używasz TableLayout, upewnij się, że grawitacja TableRows również jest wyśrodkowana. W przeciwnym razie to nie zadziała. Przynajmniej nie działało to ze mną, dopóki nie ustawiłem grawitacji TableRow na środku.
Na przykład:
<TableRow android:id="@+id/tableRow2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center">
<TextView android:text="@string/chf" android:id="@+id/tv_chf" android:layout_weight="2" android:layout_height="wrap_content" android:layout_width="fill_parent" android:gravity="center"></TextView>
</TableRow>
Musisz ustawić TextView Gravity (środek w poziomie i środek w pionie) w następujący sposób:
android:layout_centerHorizontal="true"
i
android:layout_centerVertical="true"
I dynamicznie za pomocą:
textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
layout_centerhorizontal
i layout_centervertical
przez layout_centerHorizontal
i layout_centerVertical
(„H” i „V” na wielkie litery, w przeciwnym razie nie zadziała).
Dla układu liniowego: w XML użyj czegoś takiego
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
android:text="Your Text goes here"
/>
Aby to zrobić w czasie wykonywania, użyj czegoś takiego w swojej aktywności
TextView textView1 =(TextView)findViewById(R.id.texView1);
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Dla układu względnego: w XML użyj czegoś takiego
<TextView
android:id="@+id/textView1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerInParent="true"
android:text="Your Text goes here"
/>
Aby to zrobić w czasie wykonywania, użyj czegoś takiego w swojej aktywności
TextView textView1 =(TextView)findViewById(R.id.texView1);
RelativeLayout.LayoutParams layoutParams = RelativeLayout.LayoutParams)textView1.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
textView1.setLayoutParams(layoutParams);
Użyj w pliku XML.
Plik układu
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/stringtext"/>
lub:
Użyj tego w klasie Java
TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Użyj tego dla względnego układu
android:layout_centerInParent="true"
i dla innego układu
android:gravity="center"
Jeśli TextView's
wysokość i szerokość są wrap content
tekstem, wówczas tekst TextView
zawsze będzie wyśrodkowany. Ale jeśli TextView's
szerokość match_parent
i wysokość to match_parent
czy wrap_content
potem trzeba napisać poniższy kod:
Dla RelativeLayout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Hello World" />
</RelativeLayout>
W przypadku LinearLayout:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Hello World" />
</LinearLayout>
Podczas korzystania z grawitacji działa w TextView, istnieje alternatywna metoda zaimplementowana na poziomie API 17 -
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
Nie znam różnicy, ale to też działa. Jednak tylko dla API poziomu 17 lub wyższego.
W RelativeLayout
będzie miło z tym.
I jeszcze jedno Button
i wszystko, co możesz dodać.
Poniższe działa dla mnie ładnie.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#ff314859"
android:paddingLeft="16dp"
android:paddingRight="16dp">
<TextView
android:id="@+id/txt_logo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="your text here"
android:textSize="30dp"
android:gravity="center"/>
...other button or anything else...
</RelativeLayout>
Najłatwiejszym sposobem (który jest zaskakująco wspomniany tylko w komentarzach, dlatego zamieszczam jako odpowiedź) jest:
textview.setGravity(Gravity.CENTER)
Możesz po prostu ustawić gravity
swój widok tekstu na CENTER
.
Jeśli próbujesz wyśrodkować tekst na TableRow w TableLayout, oto jak to osiągnąłem:
<TableRow android:id="@+id/rowName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dip" >
<TextView android:id="@+id/lblSomeLabel"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:layout_width="0dp"
android:layout_weight="100"
android:text="Your Text Here" />
</TableRow>
Posługiwać się android:textAlignment="center"
<TextView
android:text="HOW WAS\nYOUR\nDAY?"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
android:id="@+id/textView5"
/>
Oto moja odpowiedź, której użyłem w mojej aplikacji. Pokazuje tekst na środku ekranu.
<TextView
android:id="@+id/txtSubject"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/subject"
android:layout_margin="10dp"
android:gravity="center"
android:textAppearance="?android:attr/textAppearanceLarge" />
Jeśli używasz układu względnego:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_centerInParent="true"/>
Jeśli korzystasz z LinearLayout
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_gravity="center"/>
Po prostu w pliku XML ustaw grawitację widoku tekstu na środek:
<TextView
android:gravity="center" />
Możesz to zrobić, aby wyśrodkować tekst
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
Wysokość i szerokość TextView to zawijanie zawartości, a następnie tekst w widoku tekstowym jest zawsze wyśrodkowany, a następnie wyśrodkuj układ macierzysty, używając:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="Hello.."/>
</RelativeLayout>
W przypadku LinearLayout również kod jest taki sam:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello.."/>
</LinearLayout>
a nadprogramowo nadrzędny jest kod Java RelativeLayout. W czasie wykonywania użyj czegoś takiego w swojej aktywności
TextView textView1 =(TextView)findViewById(R.id.texView1);
RelativeLayout.LayoutParams layoutParams = RelativeLayout.LayoutParams)textView1.getLayoutParams();
layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE);
textView1.setLayoutParams(layoutParams);
Możemy to osiągnąć na wiele sposobów:
Metoda XML 01
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:gravity="center_vertical|center_horizontal"
android:text="@strings/text"
/>
Metoda XML 02
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@strings/text"
/>
Metoda XML 03
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:gravity="center"
android:text="@strings/text"
/>
Metoda XML 04
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_centerInParent="true"
android:text="@strings/text"
/>
Metoda Java 01
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Metoda Java 02
textview.setGravity(Gravity.CENTER);
Metoda Java 03
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
Grawitacja TextView działa zgodnie z układem nadrzędnym.
Układ liniowy :
Jeśli użyjesz LinearLayout, znajdziesz dwa atrybuty grawitacji android: gravity i android: layout_gravity
android: grawitacja: reprezentuje miksturę układu tekstu wewnętrznego TextView, podczas gdy android: grawitacja układu: reprezentuje pozycję TextView w widoku rodzica.
Jeśli chcesz ustawić tekst poziomo i pionowo na środku, użyj poniższego kodu
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="300dp"
android:background="@android:color/background_light"
android:layout_height="300dp">
<TextView
android:layout_width="match_parent"
android:text="Hello World!"
android:gravity="center_horizontal"
android:layout_gravity="center_vertical"
android:layout_height="wrap_content"
/>
</LinearLayout>
RelativeLayout :
Za pomocą RelativeLayout można użyć właściwości poniżej w TextView
android: gravity = "center" dla centrum tekstowego w TextView.
android: gravity = "center_horizontal" tekst wewnętrzny, jeśli chcesz wyśrodkować go poziomo.
android: gravity = "center_vertical" tekst wewnętrzny, jeśli chcesz wyśrodkować go pionowo.
android: layout_centerInParent = "true", jeśli chcesz TextView w środkowej pozycji widoku nadrzędnego. android: layout_centerHorizontal = "true", jeśli chcesz TextView w poziomo pośrodku widoku rodzica. android: layout_centerVertical = "true", jeśli chcesz TextView w pionowym środku widoku rodzica.
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="300dp"
android:background="@android:color/background_light"
android:layout_height="300dp">
<TextView
android:layout_width="match_parent"
android:text="Hello World!"
android:gravity="center"
android:layout_centerInParent="true"
android:layout_height="wrap_content"
/>
</RelativeLayout>
Wypróbuj w ten sposób, to zadziała
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center_horizontal|center_vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAlignment="center"
/>
</LinearLayout>