Nasıl bir yatay ve dikey olarak metni ortalamak do TextView
it ortasında tam olarak görünecek şekilde o, TextView
in Android
?
Nasıl bir yatay ve dikey olarak metni ortalamak do TextView
it ortasında tam olarak görünecek şekilde o, TextView
in Android
?
Yanıtlar:
XML düzenini kullandığınızı varsayıyorum.
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:text="@string/**yourtextstring**"
/>
Ayrıca yerçekimini center_vertical
veya center_horizontal
ihtiyacınıza göre kullanabilirsiniz.
ve @stealthcopter'in java'da yorumladığı gibi: .setGravity(Gravity.CENTER);
android:gravity="center"
). Hala ekranın en solunda görünür. :(
android:layout_gravity="center"
, başka bir şey yapar.
android:gravity="center"
Bu hile yapacak
Ayrıca aşağıdakileri kullanarak dinamik olarak ayarlayabilirsiniz:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:layout_centerInParent="true"
Bu, mizanpajın yüksekliğinin ve genişliğinin wrap_content olarak ayarlandığı bir RelativeLayout ile kullanıldığında çalışır.
TextView
. Metin, tam genişlikli olacak ve içinde çok satırlı ve SOL iki yana yaslanacak TextView
. Ekranda sola dayalı görünecektir. Diğer cevaplarda belirtildiği gibi "yerçekimi" kullanmalısınız.
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"
/>
Bunu yapmanın iki yolu vardır.
XML kodunda bir ilk. Gravity
Öznitelikte dikkat etmeniz gerekir . Bu niteliği Grafik Düzenleyici'de de bulabilirsiniz; XML EDITOR'dan daha kolay olabilir.
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_vertical|center_horizontal"
android:text="Your Text"
/>
Özel senaryo için yerçekimi değerleri şöyle olacaktır:
center_vertical|center_horizontal
Grafik düzenleyicide olası tüm değerleri bulacaksınız, hatta sonuçlarını görün.
TableLayout kullanıyorsanız, TableRows'ın ağırlık ayarını da merkeze ayarladığınızdan emin olun. Aksi takdirde çalışmaz. En azından TableRow'un ağırlık merkezini ayarlayana kadar benimle çalışmadı.
Örneğin, şöyle:
<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>
TextView Gravity'yi (Orta Yatay ve Orta Dikey) şu şekilde ayarlamanız gerekir :
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);
layout_centerhorizontal
ve layout_centervertical
ile layout_centerHorizontal
ve layout_centerVertical
("H" ve "V" harfini büyük harfe çevirin, aksi takdirde çalışmaz).
Bence,
android:gravity="center"
daha iyi,
android:layout_centerInParent="true"
ki daha iyi,
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
en azından metni biçimlendirmek için.
Doğrusal Düzen için: XML'de böyle bir şey kullanın
<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"
/>
Çalışma zamanında bunu yapmak için etkinliğinizde böyle bir şey kullanın
TextView textView1 =(TextView)findViewById(R.id.texView1);
textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Göreceli Düzen için: XML'de böyle bir şey kullanın
<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"
/>
Çalışma zamanında bunu yapmak için etkinliğinizde böyle bir şey kullanın
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);
XML dosyasında kullanın.
Düzen dosyası
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:text="@string/stringtext"/>
veya:
Bunu Java sınıfının içinde kullanın
TextView textView =(TextView)findViewById(R.id.texviewid);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Göreli düzen için bunu kullanın
android:layout_centerInParent="true"
ve diğer düzen için
android:gravity="center"
Eğer TextView's
yüksekliği ve genişliği olan wrap content
bir metin içinde daha sonra TextView
her zaman ortalanmalıdır. Ancak TextView's
genişlik match_parent
ve yükseklik match_parent
veya wrap_content
ise aşağıdaki kodu yazmanız gerekir:
İçin 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>
İçin 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>
Yerçekimi çalışmalarını TextView için kullanırken, API seviye 17'de uygulanan alternatif bir yöntem var -
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
Farkı bilmiyorum ama işe yarıyor. Ancak yalnızca API seviye 17 veya üstü için.
İçinde RelativeLayout
onunla iyi olacak.
Ve başka Button
ve ekleyebileceğiniz her şey.
Aşağıdakiler benim için iyi çalışıyor.
<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>
En kolay yol (şaşırtıcı bir şekilde sadece yorumlarda belirtilmiştir, bu yüzden neden cevap olarak gönderiyorum):
textview.setGravity(Gravity.CENTER)
Bir TableLayout'taki bir TableRow'da metni ortalamaya çalışıyorsanız, bunu nasıl başardım:
<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>
kullanım 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"
/>
İşte benim app kullandığım cevabım. Metni ekranın ortasında gösterir.
<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" />
Göreli Düzen kullanıyorsanız:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_centerInParent="true"/>
LinearLayout kullanıyorsanız
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/stringname"
android:layout_gravity="center"/>
Basitçe, XML dosyanızda, textview yerçekimini merkeze ayarlayın:
<TextView
android:gravity="center" />
Metni ortalamak için bunu yapabilirsiniz
<TextView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center" />
TextView'in yüksekliği ve genişliği kaydırma içeriğidir, daha sonra metin görünümündeki metin her zaman ortalanır, ardından aşağıdakileri kullanarak ana düzeninde merkez oluşturur:
<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>
LinearLayout için de kod aynıdır:
<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>
ve pro-gramer olarak ebeveyn RelativeLayout java kodu bu çalışma zamanında faaliyetinizde böyle bir şey kullanın
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);
Bunu şu çeşitli yollarla başarabiliriz:
XML yöntemi 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"
/>
XML yöntemi 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"
/>
XML yöntemi 03
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:gravity="center"
android:text="@strings/text"
/>
XML yöntemi 04
<TextView
android:id="@+id/textView"
android:layout_height="match_parent"
android:layout_width="wrap_content"
android:layout_centerInParent="true"
android:text="@strings/text"
/>
Java yöntemi 01
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
Java yöntemi 02
textview.setGravity(Gravity.CENTER);
Java yöntemi 03
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
TextView yerçekimi, ana düzeninize göre çalışır.
LinearLayout :
Eğer LinearLayout kullanıyorsanız iki yerçekimi özelliği android bulacaksınız: yerçekimi ve android: layout_gravity
android: yerçekimi: TextView iç metninin düzen iksirini temsil ederken android: layout_gravity: üst görünümde TextView konumunu temsil eder.
Metni yatay ve dikey olarak ortalamak istiyorsanız, aşağıdaki kodu kullanın
<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 :
RelativeLayout'u kullanarak TextView'de aşağıdaki özelliği kullanabilirsiniz
android: gravity = TextView içindeki metin merkezi için "center".
android: gravity = "center_horizontal" yatay olarak ortalanmış olmasını istiyorsanız iç metin.
android: gravity = "center_vertical" dikey olarak ortalanmış isterseniz iç metin.
android: layout_centerInParent = "true" TextView'i üst görünümün orta konumunda istiyorsanız. android: layout_centerHorizontal = "true" TextView'in üst görünümün yatay ortasında olmasını istiyorsanız. android: layout_centerVertical = "true" üst görünümün dikey ortasında TextView istiyorsanız.
<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>
Bu şekilde deneyin, işe yarayacak
<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>