كيف يمكنني مركز النص أفقيا و عموديا في TextView?
سؤال
كيف يمكنني مركز النص أفقيا و عموديا في 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 الموقف في الرأي الأم.
إذا كنت ترغب في تعيين النص أفقيا وعموديا مركز ثم استخدام رمز أدناه هذا
<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>