ฉันมีTextView
ในใบสมัครของฉัน ฉันต้องการจัดแนวข้อความในด้านขวา ฉันพยายามเพิ่ม:
android:gravity="right"
แต่มันไม่ได้ผลสำหรับฉัน
ฉันจะทำอะไรผิด
ฉันมีTextView
ในใบสมัครของฉัน ฉันต้องการจัดแนวข้อความในด้านขวา ฉันพยายามเพิ่ม:
android:gravity="right"
แต่มันไม่ได้ผลสำหรับฉัน
ฉันจะทำอะไรผิด
คำตอบ:
ฉันคิดว่าคุณกำลังทำสิ่งนี้: android:layout_width = "wrap_content"
ในกรณีนี้ให้ทำสิ่งนี้:android:layout_width = "match_parent"
โดยทั่วไปจะแตกต่างจากandroid:gravity="right"
android:layout_gravity="right"
คนแรกที่ส่งผลกระทบต่อตำแหน่งของข้อความตัวเองในมุมมองดังนั้นหากคุณต้องการที่จะจัดชิดขวาแล้วlayout_width=
ควรจะเป็นอย่างใดอย่างหนึ่งหรือ"fill_parent"
"match_parent"
ส่วนที่สองส่งผลต่อตำแหน่งมุมมองภายในพาเรนต์กล่าวอีกนัยหนึ่งคือการจัดแนววัตถุเอง (กล่องแก้ไขหรือมุมมองข้อความ) ภายในมุมมองพาเรนต์
ทางออกที่ดีกว่านั้นคือทางออกที่ง่ายที่สุดและเป็นวิธีที่แก้ไขโค้ดพฤติกรรมของคุณได้น้อยลงวิธีการแก้ปัญหาที่ดีคือคนที่เป็นที่ง่ายที่สุดและเป็นคนที่ไม่ปรับเปลี่ยนพฤติกรรมที่น้อยลงในรหัสของคุณ
จะทำอย่างไรถ้าคุณสามารถแก้ปัญหานี้ได้ด้วย 2 คุณสมบัติบนของคุณ TextView
?
แทนที่จะต้องเปลี่ยนLinearLayout
คุณสมบัติของคุณที่อาจเปลี่ยนพฤติกรรมของLinearLayout
เด็กได้
ด้วยวิธีนี้คุณไม่จำเป็นต้องเปลี่ยนLinearLayout
คุณสมบัติและลักษณะการทำงานคุณเพียงแค่เพิ่มคุณสมบัติสองอย่างต่อไปนี้ในเป้าหมายของคุณTextView
:
android:gravity="right"
android:textAlignment="gravity"
อะไรจะดีไปกว่าการเปลี่ยนเฉพาะเป้าหมายของคุณเพื่อแก้ปัญหาของคุณแทนที่จะมีโอกาสทำให้เกิดปัญหาอื่นในอนาคตโดยปรับเปลี่ยนพ่อเป้าหมายของคุณ ลองคิดดู :)
TextView
คุณสมบัติ? - คุณสามารถตรวจสอบทรัพย์สินได้จากการอ้างอิงที่นี่: developer.android.com/reference/android/view/
android:layout_gravity
ถูกใช้เพื่อจัดแนวมุมมองข้อความที่เกี่ยวข้องกับเค้าโครงหลัก
android:gravity
ใช้เพื่อจัดแนวข้อความภายในมุมมองข้อความ
คุณแน่ใจหรือไม่ว่าคุณกำลังพยายามจัดแนวข้อความภายในมุมมองข้อความไปทางขวาหรือคุณต้องการย้ายมุมมองข้อความไปทางขวาตามรูปแบบของผู้ปกครองหรือคุณพยายามที่จะทำให้ทั้งคู่ประสบความสำเร็จ
ข้อมูลโค้ดต่อไปนี้:
android:textAlignment="textEnd"
android:layout_gravity="end"
ใช้งานได้ดีสำหรับฉัน
ตรวจสอบให้แน่ใจว่าคุณไม่ได้ใช้android:layout_width="wrap_content"
ถ้าเป็นเช่นนั้นจะไม่สามารถกำหนดแรงโน้มถ่วงได้เนื่องจากคุณมีพื้นที่ไม่เพียงพอสำหรับข้อความที่จะจัดตำแหน่ง ใช้แทนandroid:layout_width="fill_parent"
android:gravity="right"
มันถูกใช้โดยทั่วไปใน Linear Layout ดังนั้นคุณต้องตั้งค่าความกว้างของ TextView หรือ EditText เป็น
android:layout_width = "match_parent"
และ
เมื่อคุณทำงานในเค้าโครงสัมพันธ์ให้ใช้
android:layout_alignParentRight="true"
สร้าง (LinearLayout) android:layout_width="match_parent"
และ TextView'sandroid:layout_gravity="right"
ถ้าอยู่ในRelativeLayout
คุณสามารถใช้android:layout_toRightOf="@id/<id_of_desired_item>"
หรือ
หากคุณต้องการจัดตำแหน่งright
มุมของอุปกรณ์สถานที่android:layout_alignParentRight="true"
ให้ฉันอธิบายแนวคิดแรงโน้มถ่วงโดยใช้เว็บเพราะผู้พัฒนาจำนวนมากรู้ตัว
android_layout_gravity
พฤติกรรม float:left|right|top|bottom
ในขณะที่android_gravity
ทำงานเป็นtext_align:centre|left|right
ใน Android float คือ android_layout_gravity และ text_align: คือ android_gravity
และ android_layout_gravity ใช้เทียบกับผู้ปกครอง โดยที่ android_gravity ใช้กับเนื้อหาย่อยหรือเนื้อหาภายใน
หมายเหตุ android_gravity ใช้งานได้เฉพาะเมื่อมุมมองเป็นแบบ match_parent (เมื่อมีพื้นที่ว่างตรงกลาง)
ทำงานด้านล่างสำหรับฉัน:
<TextView
android:id="@+id/tv_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sarah" />
<TextView
android:id="@+id/tv_distance"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/tv_username"
android:layout_alignParentEnd="true"
android:layout_toEndOf="@+id/tv_username"
android:text="San Marco"
android:textAlignment="viewEnd" />
โปรดทราบandroid:layout_alignParentEnd
และandroid:textAlignment
การตั้งค่าของ TextView ที่สอง
คุณสามารถใช้ได้:
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
สิ่งนี้ควรตอบสนองวัตถุประสงค์
android:textAlignment="textStart"
ในกรณีของฉันฉันใช้Relative Layout
สำหรับemptyString
หลังจากดิ้นรนกับสิ่งนี้เป็นเวลาหนึ่งชั่วโมง สิ่งนี้ใช้ได้สำหรับฉันเท่านั้น:
android:layout_toRightOf="@id/welcome"
android:layout_toEndOf="@id/welcome"
android:layout_alignBaseline="@id/welcome"
layout_toRightOf
หรือ layout_toEndOf
ทำงานได้ทั้งสองอย่าง แต่เพื่อสนับสนุนดีกว่าฉันใช้ทั้งสองอย่าง
วิธีทำให้ชัดเจนยิ่งขึ้น:
นี่คือสิ่งที่ฉันพยายามทำ:
และนี่คือเอาท์พุทของอีมูเลเตอร์
เค้าโครง:
<TextView
android:id="@+id/welcome"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:layout_marginTop="16dp"
android:text="Welcome "
android:textSize="16sp" />
<TextView
android:id="@+id/username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@id/welcome"
android:layout_toRightOf="@id/welcome"
android:text="@string/emptyString"
android:textSize="16sp" />
สังเกตว่า:
android:layout_width="wrap_content"
โรงงานGravity
ไม่ได้ใช้ฉันยังประสบปัญหาเดียวกันและคิดว่าปัญหาเกิดขึ้นเนื่องจาก layout_width ของ TextView นั้นมี wrap_content คุณต้องมี layout_width เป็น match_parent และ android: gravity = "gravity"
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/tct_postpone_hour"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_gravity="center"
android:gravity="center_vertical|center_horizontal"
android:text="1"
android:textSize="24dp" />
</RelativeLayout>
ทำให้การจัดตำแหน่งหมายเลขหนึ่งอยู่ตรงกลางทั้งแนวนอนและแนวตั้ง
ลองเพิ่มandroid:gravity="center"
เข้าไปTextView
ฉันได้ใช้คุณลักษณะ "layout_alignRight" ในกรณีของฉันในข้อความมัน:
android:layout_alignRight="@+id/myComponentId"
หากคุณต้องการเพิ่มระยะห่างที่ถูกต้องเพียงตั้งค่าแอตทริบิวต์ "Layout_Margin Right" เป็น "20dp" สำหรับตัวอย่างในข้อความ:
android:layout_marginRight="20dp"