Как центрировать текст по горизонтали и вертикали в TextView?
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 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 (центр горизонтальный и Центр вертикальный), как это:
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 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 gravity работает в соответствии с вашим родительским макетом.
LinearLayout:
Если вы используете LinearLayout, вы найдете два атрибута гравитации android: гравитация и android: layout_gravity
android: gravity: представляет макет зелья внутреннего текста 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>