30 ответов:
Я предполагаю, что вы используете XML-макета.
<TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="@string/**yourtextstring**" />вы также можете использовать гравитацию
center_verticalилиcenter_horizontalсогласно вашей потребности.и как прокомментировал @stealthcopter в java:
.setGravity(Gravity.CENTER);
вы также можете настроить его динамически с помощью:
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
android:layout_centerInParent="true"это работает при использовании с RelativeLayout, где высота и ширина макета установлены в wrap_content.
вы также можете использовать комбинацию:
android:gravity="left|center"затем, если ширина textview больше ,чем" fill_parent", текст все равно будет выровнен по левому краю (не центрирован, как при гравитации, установленной только в"центр").
применить силы тяжести:
TextView txtView = (TextView) findViewById(R.id.txtView); txtView.setGravity(Gravity.CENTER_HORIZONTAL);по вертикали:
txtView.setGravity(Gravity.CENTER_VERTICAL);в XML:
<TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:text="@string/Hello_World" />
Если вы используете TableLayout убедитесь, что установить гравитацию TableRows в центр, тоже. Иначе ничего не получится. По крайней мере, это не сработало со мной, пока я не установил гравитацию TableRow в центр.
например, вот так:
<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 (центр горизонтальный и Центр вертикальный), как это:
android:layout_centerHorizontal="true"и
android:layout_centerVertical="true"и динамично, используя:
textview.setGravity(Gravity.CENTER); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
есть два способа сделать это.
первый в XML-коде. Вы должны обратить внимание на . Вы также можете найти этот атрибут в графическом редакторе; это может быть проще, чем редактор XML.
<TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center_vertical|center_horizontal" android:text="Your Text" />для вашего конкретного сценария, значения силы тяжести будут:
center_vertical|center_horizontalв графическом редакторе вы найдете все возможные значения, даже увидеть их результаты.
По-моему,
android:gravity="center"лучше, чем
android:layout_centerInParent="true"что лучше,
android:layout_centerHorizontal="true" android:layout_centerVertical="true"по крайней мере для форматирования текста.
Для Линейной Компоновки: В XML используйте что-то вроде этого
<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" />чтобы сделать это во время выполнения используйте что-то вроде этого в своей деятельности
TextView textView1 =(TextView)findViewById(R.id.texView1); textView1.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);для относительной компоновки: в XML используйте что-то вроде этого
<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" />чтобы сделать это во время выполнения используйте что-то вроде этого в своей деятельности
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-файле.
шаблон
<TextView android:layout_width="fill_parent" android:layout_height="fill_parent" android:gravity="center" android:text="@string/stringtext"/>или:
используйте это внутри класса Java
TextView textView =(TextView)findViewById(R.id.texviewid); textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
используйте это для относительной компоновки
android:layout_centerInParent="true"и для другого макета
android:gravity="center"
при использовании gravity works для TextView, есть альтернативный метод, реализованный в API level 17 -
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);Не знаю разницы, но это тоже работает. Однако только для уровня API 17 или выше.
на
RelativeLayout, это будет хорошо с ним.и еще один
Buttonи все остальное вы можете добавить.следующее прекрасно работает для меня.
<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>
если
TextView'sвысота и ширинаwrap contentтекст в тегеTextViewвсегда быть в центре. Но еслиTextView'sширинаmatch_parentи высотойmatch_parentилиwrap_contentзатем вы должны написать ниже код:на RelativeLayout:
<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>на LinearLayout:
<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>
самый простой способ (который удивительно упоминается только в комментариях, поэтому я публикую в качестве ответа):
textview.setGravity(Gravity.CENTER)
Если вы пытаетесь центрировать текст на TableRow в TableLayout, вот как я достиг этого:
<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>
вот мой ответ, который я использовал в моем приложении. Он показывает текст в центре экрана.
<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" />
Если вы используете относительный макет:
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/stringname" android:layout_centerInParent="true"/>Если вы используете LinearLayout
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/stringname" android:layout_gravity="center"/>
как многие ответы предлагают выше работает отлично.
android:gravity="center"Если вы хотите, чтобы центр его вертикально просто:
android:gravity="center_vertical"или просто по горизонтали:
android:gravity="center_horizontal"
просто в вашем XML-файле установите гравитацию textview в центр:
<TextView android:gravity="center" />
высота и ширина TextView-это содержимое обертки, тогда текст в textview всегда центрируется, а затем делает центр в своем родительском макете с помощью:
<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 также код такой же:
<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>и Pro-грамматически родитель является RelativeLayout java код это во время выполнения использовать что-то вроде этого в вашей деятельности
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);
вы можете сделать это, чтобы получить текст по центру
<TextView android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" />
мы можем достичь этого с помощью этих нескольких способов: -
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" />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" />XML метод 03
<TextView android:id="@+id/textView" android:layout_height="match_parent" android:layout_width="wrap_content" android:gravity="center" android:text="@strings/text" />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" />Java метод 01
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);Java метод 02
textview.setGravity(Gravity.CENTER);метод Java 03
textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
android:gravity="center_horizontal"для выравнивания центра текста по горизонтали.android:gravity="center_vertical"для выравнивания центра текста по вертикали.android:gravity="center"для выравнивания текстового центра как по вертикали, так и по горизонтали.<TextView android:layout_width="match_parent" android:gravity="center_horizontal|center_vertical" android:layout_height="match_parent" />
попробуйте этот способ, он будет работать
<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>
использовать ниже код в XML, он работал для меня вы можете изменить ориентацию, он будет в центре
<LinearLayout android:layout_width="match_parent" android:orientation="horizontal" android:background="@color/colorPrimaryDark" android:gravity="center" android:layout_height="wrap_content"> <TextView android:id="@+id/id_text" android:layout_width="wrap_content" android:textSize="18sp" android:textColor="@android:color/white" android:textStyle="normal" android:layout_height="wrap_content" android:text="centre me"/> </LinearLayout>
гравитация TextView работает в соответствии с вашим родительским макетом.
LinearLayout:
Если вы используете LinearLayout, то вы найдете два атрибута гравитации андроид:гравитация и Android:layout_gravity
android: гравитация: представление макета зелье внутреннего текста TextView в то время как android: layout_gravity: представление позиции TextView в Родительском представлении.
Если вы хотите установить текст по горизонтали & вертикально затем использовать ниже код
<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 вы можете использовать ниже свойство в TextView
android: gravity= "центр" для текстового центра в TextView.
android: gravity= "center_horizontal" внутренний текст, если вы хотите по горизонтали по центру.
android: gravity= "center_vertical" внутренний текст, если вы хотите по вертикали по центру.
android: layout_centerInParent= " true" если вы хотите TextView в центральной позиции родительского представления. android: layout_centerHorizontal= "true", если вы хотите TextView в горизонтальном центре родительского представления. android: layout_centerVertical= "true", если вы хотите TextView в вертикальном центре родительского представления.
<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>

Comments