Soru Metni bir TextView'de yatay ve dikey olarak nasıl ortalarım?


Metni yatay ve dikey olarak nasıl ortalarım TextView, böylece tam olarak ortanın ortasında görünür. TextView içinde Android?


1688
2018-01-11 00:27


Menşei


fill_parent için layout_width ve layout_height öğelerini ayarlayın, daha sonra yerçekimini merkeze ayarlayın. Bu hile yapacak - Amila
fill_parent artık kullanımdan kaldırıldı, böylece layout_width ve layout_height öğelerinde MATCH_PARENT kullanın ve TextView öğesinin ağırlık merkezini ortalayın. - Bilal Ahmad


Cevaplar:


XML düzenini kullandığınızı farz ediyorum.

<TextView  
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"
    android:text="@string/**yourtextstring**"
/>

Yer çekimi de kullanabilirsiniz center_vertical veya center_horizontal İhtiyacınıza göre.

ve @stealthcopter yorumladı java'da: .setGravity(Gravity.CENTER);


2655
2018-01-11 01:53



Bu, düzenin yükseklik ve genişliğinin wrap_content olarak ayarlandığı RelativeLayout ile kullanıldığında çalışmaz - Rob
@Rob, genişlik ve yükseklik wrap_content ise, teknik olarak, metin zaten ortalanmış. - JoJo
TextView'ı başka bir görünüme göre hizalamak istiyorsam, ancak metin kendi içinde ortalanmış mı?
Bu benim için çalışmıyor (android:gravity="center"). Ekranın en solunda hala görünüyor. :( - uSeRnAmEhAhAhAhAhA
Şaşkın olmamak android:layout_gravity="center", başka bir şey yapar. - Rudi Kershaw


android:gravity="center" 

Bu hile yapacak


398
2018-02-08 22:54



Metin görüntünün çalışması için match_parent veya fill_parent olması gerekir. Sarma içeriği ise, o zaman merkez olmaz. - Kalel Wade
@KalelWade: wrap_content ile bir metin görünümünde metni ortalamak hiç mantıklı değil. Belki de ebeveyn görünümünde bir metin görünümünü ortalamayı düşünürsünüz, bu durumda, bu satırı ebeveyninize basitçe koyun. - Mooing Duck
@Mooing Duck Bu nedenle, içeriği sarma kullanmama nedeni - mantıklı değil. Ama ya uğraşırken, yapıştığında ya da sadece acele ettiğinde, iki ve ikiyi bir araya getiremezsin. Bu yüzden bundan bahsetmiştim. - Kalel Wade
Genişlik ve yükseklik "wrap_content" olan TextView, width ve height "match_parent" ile LinearLayout içinde ise, Linear_layout öğesinin layout_gravity değerini ayarlamanız gerekir. - Faisal Naseer
@MooingDuck, yükseklik "wrap_content" olduğunda ve yerçekimi "center_vertical" olduğunda, Design (önizleme) içinde ortalanmış olarak çizilir, ancak bir cihazda bir üstte konumlandırılır. Yani "match_parent" yüksekliğini ayarlayın ve yerçekimini "center_vertical" veya "center" olarak ayarlayın. - CoolMind


Bunu dinamik olarak kullanarak da ayarlayabilirsiniz:

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

268
2017-11-21 12:25



Veya sadece textview.setGravity (Gravity.CENTER); - Amplify91
Xml'de yazmak veya Java dosyasına yazmak için hangi yolun karar verileceğine karar verme kriterleri nedir? - phi
@Kenju kolayca düzenlenebilir olmasını istiyorsanız ve çalışma zamanı değeri değişmez: XML. Gerçek zamanlı değeri değiştirmeniz gerekiyorsa (örneğin, kullanıcı bir düğmeye bastığında hizalamayı değiştirirseniz), bunu yalnızca Java üzerinden yapabilirsiniz. - Gustavo Maciel
@GustavoMaciel yani, temelde xml dinamik olarak değiştirilmesi gerekiyorsa ... Şimdi anladım. Basit ve yararlı cevabınız için teşekkürler! - phi
thats temiz teşekkür ederim - Moritz Schmidt


android:layout_centerInParent="true"

Bu, düzenin yükseklik ve genişliğinin wrap_content olarak ayarlandığı bir RelativeLayout ile kullanıldığında çalışır.


97
2017-11-11 00:58



Bu, içindeki metni değil TextView'ı ortalar. - anthropomo
Bu kelime-sarma olduğunda, çalışmaz TextView. Metin tam genişlikte ve çok satırlı VE SOL solunda olacak TextView. Ekranda sola yaslanmış görünecektir. Diğer cevaplarda belirtildiği gibi "yerçekimi" kullanmalısınız. - David Manpearl


Ayrıca kombinasyonu kullanabilirsiniz:

android:gravity="left|center"

Sonra, metin görünümü genişliği "fill_parent" den daha fazlaysa, metin yine de sola hizalı olacaktır (yerçekimi yalnızca "merkez" olarak ayarlanmış şekilde değil).


68
2018-01-01 20:11





Yerçekimi uygulayın:

TextView txtView = (TextView) findViewById(R.id.txtView);
txtView.setGravity(Gravity.CENTER_HORIZONTAL);

Dikey için:

txtView.setGravity(Gravity.CENTER_VERTICAL);

XML'de:

<TextView      
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:gravity="center"
    android:text="@string/Hello_World"        
/>

44
2018-05-30 05:34





TableLayout'ı kullanıyorsanız, TableRows öğelerinin yerçekimini de ortalayacak şekilde ayarladığınızdan emin olun. Aksi takdirde işe yaramaz. En azından, TableRow'un ağırlık merkezini merkeze ayarlayana kadar benimle çalışmadı.

Örneğin, bunun gibi:

<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>

35
2018-05-13 11:57



İlginç. Bunun LinearLayout (TableRow parent) için de geçerli olup olmadığını kontrol etmelisiniz. - Martin


Ayarlaman gerek TextView Yerçekimi (Merkez Yatay ve Dikey Dikey) şöyle:

android:layout_centerHorizontal="true"   

ve

android:layout_centerVertical="true"

Ve dinamik olarak kullanarak:

textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

33
2018-05-15 05:03



Kod semantiği yanlış. değiştirmek layout_centerhorizontal ve layout_centervertical tarafından layout_centerHorizontal ve layout_centerVertical ("H" ve "V" büyük harfle, aksi halde işe yaramaz). - yugidroid
layout_ *, View ebeveyni olmak istediği yere söyler. Layout_ * öğesi olmadan, bileşenlerinin nasıl yerleştirileceğini gösterir. - Dandre Allison