كيف يمكنني مركز النص أفقيا و عموديا في TextView?

StackOverflow https://stackoverflow.com/questions/432037

  •  08-07-2019
  •  | 
  •  

سؤال

كيف يمكنني مركز النص أفقيا و عموديا في TextView, بحيث يبدو بالضبط في منتصف TextView في Android?

هل كانت مفيدة؟

المحلول

وأفترض أنك تستخدم تخطيط XML.

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

ويمكنك أيضا استخدام center_vertical الجاذبية أو center_horizontal وفقا للحاجة الخاصة بك.

وكما علقstealthcopter في جافا: .setGravity(Gravity.CENTER);

نصائح أخرى

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

وهناك طريقتان للقيام بذلك.

والأول في رمز XML. تحتاج إلى إيلاء الاهتمام في Gravity السمة. يمكنك أيضا العثور على هذه السمة في محرر الرسوم البيانية. قد يكون أسهل من المحرر 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

في محرر الرسوم البيانية سوف تجد جميع القيم الممكنة، حتى نرى نتائجها.

تحتاج إلى تعيين TextView الجاذبية (مركز أفقي & مركز العمودي) مثل هذا:

android:layout_centerHorizontal="true"   

و

android:layout_centerVertical="true"

و حيوي باستخدام:

textview.setGravity(Gravity.CENTER);
textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.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" 

وأثناء استخدام الجاذبية يعمل لTextView، هناك أسلوب بديل تنفيذها في مستوى API 17 -

textView.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);

لا أعرف الفرق، ولكنه يعمل أيضا. ولكن فقط لمستوى API 17 أو أعلى.

إذا كان TextView's الطول والعرض wrap content ثم نص في TextView دائما يكون محورها.ولكن إذا كان TextView's عرض match_parent و ارتفاع match_parent أو wrap_content ثم عليك أن تكتب رمز أدناه:

بالنسبة 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>

بالنسبة 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>

في 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.setGravity(Gravity.CENTER)

ويمكنك مجرد مجموعة من gravity textview الخاص بك إلى 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
        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"
/>
<اقتباس فقرة>   

وجافا طريقة 01

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
<اقتباس فقرة>   

وطريقة جافا 02

textview.setGravity(Gravity.CENTER);
<اقتباس فقرة>   

وجافا طريقة 03

textView.setTextAlignment(View.TEXT_ALIGNMENT_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>

والأم الموالية للنحويا هو RelativeLayout كود جافا هذا في وقت التشغيل استخدام شيء من هذا القبيل في نشاطك

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 الجاذبية يعمل في تخطيط الوالدين.

LinearLayout:

إذا كنت تستخدم LinearLayout ثم سوف تجد اثنين من الجاذبية السمة الروبوت:الجاذبية & الروبوت:layout_gravity

الروبوت:الجاذبية :تمثل تخطيط جرعة من النص الداخلية من TextView حين الروبوت:layout_gravity :تمثل TextView الموقف في الرأي الأم.

enter image description here

إذا كنت ترغب في تعيين النص أفقيا وعموديا مركز ثم استخدام رمز أدناه هذا

<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

الروبوت:الجاذبية="center" النص في TextView.

الروبوت:الجاذبية="center_horizontal" الداخلية النص إذا كنت تريد أفقيا محورها.

الروبوت:الجاذبية="center_vertical" الداخلية النص إذا كنت تريد محورها عموديا.

الروبوت:layout_centerInParent="true" إذا كنت تريد TextView في موقف وسط من وجهة نظر الأم.الروبوت:layout_centerHorizontal="true" إذا كنت تريد TextView في أفقيا مركز من وجهة نظر الأم.الروبوت: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>

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

واستخدام رمز أدناه في أكس لأنها عملت لي يمكنك تغيير اتجاه سيكون في مركز

<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>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top