ความแตกต่างระหว่างแรงโน้มถ่วงและ layout_gravity ใน Android คืออะไร?


1328

ฉันรู้ว่าเราสามารถตั้งค่าต่อไปนี้เพื่อandroid:gravityและ android:layout_gravityคุณสมบัติ:

  1. center
  2. center_vertical
  3. center_horizontalฯลฯ

แต่ฉันสับสนเกี่ยวกับทั้งสองอย่างนี้

อะไรคือความแตกต่างระหว่างการใช้งานandroid:gravityและandroid:layout_gravity?


265
เคล็ดลับที่ง่ายต่อการจดจำ: ใช้ "รูปแบบแรงโน้มถ่วง" เป็น "แรงโน้มถ่วงนอก"
Vishnu Haridas

6
ศูนย์ == center_vertical | center_horizontal
Yousha Aleayoub

4
วิดีโอเหล่านี้ช่วยให้ฉันเข้าใจความแตกต่างได้เป็นอย่างมาก: youtube.com/watch?v=DxfYeAUd238 youtube.com/watch?v=1FyAIWLVcTc
Roni Castro

ImageViewดูเหมือนจะประพฤติแตกต่างจากTextViewของ
samis

คำตอบ:


1346

ชื่อของพวกเขาควรช่วยคุณ:

  • android:gravityตั้งค่าความโน้มถ่วงของเนื้อหา (เช่นหัวข้อย่อย) ของViewเนื้อหาที่ใช้
  • android:layout_gravityกำหนดแรงโน้มถ่วงของViewหรือLayoutญาติกับผู้ปกครอง

และเป็นตัวอย่างที่นี่


88
โดยพื้นฐานแล้วทุกสิ่งที่layout_กำหนดสิ่งที่มีผลต่อองค์ประกอบภายนอก
Triang3l

29
ดูสิฉันพบว่ามันตลกเพราะถ้าฉันเพิ่งออกไปชื่อปรีชาของฉันคืออีกทางหนึ่ง ทุกครั้งที่ฉันคิดว่า "layout_gravity" หมายถึง "แรงโน้มถ่วงสำหรับวิธีที่ ViewGroup วางเนื้อหา" และ "แรงโน้มถ่วง" คือ "ที่มุมมองนี้โน้มไปที่"
Ogre

15
ดังนั้นจะเกิดอะไรขึ้นถ้าandroid:gravityตั้งค่าเป็นซ้ายและandroid:layout_gravityตั้งค่าลูกของมันไว้ทางขวา เด็ก ๆ จะไปทางไหน
Thupten

2
ตามที่ @Suragch แสดงความคิดเห็นกับคำตอบของเขา layout_gravity จะใช้ได้เฉพาะใน LinearLayout และ FrameLayout เท่านั้น LinearLayout มีข้อ จำกัด ในการใช้งาน
Marco Luglio

1
@ Thupten คำถามที่ดีมาก ฉันเดาว่าหนึ่งจะเหนือกว่า (ฉันเดา layout_gravity ของเด็ก) และอีกอันหนึ่งเป็นเพียงค่าเริ่มต้นสำหรับอันที่ชนะ
Trilarion

522

ข้างในข้างนอก

  • gravityจัดเรียงเนื้อหาภายในมุมมอง
  • layout_gravityจัดตำแหน่งมุมมองด้านนอกของตัวเอง

บางครั้งมันก็ช่วยให้เห็นภาพได้เช่นกัน สีเขียวและสีฟ้าTextViewsและอื่น ๆ LinearLayoutsสองสีพื้นหลัง

ป้อนคำอธิบายรูปภาพที่นี่

หมายเหตุ

  • ไม่ทำงานสำหรับมุมมองในlayout_gravity RelativeLayoutใช้มันสำหรับมุมมองในหรือLinearLayout FrameLayoutดูคำตอบเพิ่มเติมของฉันสำหรับรายละเอียดเพิ่มเติม
  • ความกว้าง (หรือความสูง) ของมุมมองต้องมากกว่าเนื้อหา มิฉะนั้นgravityจะไม่มีผลกระทบใด ๆ ดังนั้นwrap_contentและgravityไร้ความหมายเข้าด้วยกัน
  • ความกว้างของมุมมอง (หรือความสูง) ต้องน้อยกว่าพาเรนต์ มิฉะนั้นlayout_gravityจะไม่มีผลกระทบใด ๆ ดังนั้นmatch_parentและlayout_gravityไร้ความหมายเข้าด้วยกัน
  • layout_gravity=centerมีลักษณะเช่นเดียวกับlayout_gravity=center_horizontalที่นี่เพราะพวกเขาอยู่ในรูปแบบเชิงเส้นในแนวตั้ง คุณไม่สามารถจัดกึ่งกลางแนวตั้งในกรณีนี้ดังนั้นจัดกึ่งกลางในlayout_gravity=centerแนวนอนเท่านั้น
  • คำตอบนี้เกี่ยวข้องกับการตั้งค่าgravityและlayout_gravityมุมมองภายในเค้าโครงเท่านั้น หากต้องการดูว่าเกิดอะไรขึ้นเมื่อคุณตั้งค่าgravityเค้าโครงของตัวหลักให้ตรวจสอบคำตอบเพิ่มเติมที่ฉันอ้างถึงข้างต้น (สรุป: gravityใช้งานไม่ได้ดีกับRelativeLayoutแต่มีประโยชน์กับ a LinearLayout.)

ดังนั้นจำรูปแบบจัด _gravity ในมุมมองของรูปแบบ แรงโน้มถ่วงจัดเรียงเนื้อหาภายในมุมมอง

XML

นี่คือ xml สำหรับภาพด้านบนสำหรับการอ้างอิงของคุณ:

<?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"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#e3e2ad"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textSize="24sp"
            android:text="gravity=" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:background="#bcf5b1"
            android:gravity="left"
            android:text="left" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:background="#aacaff"
            android:gravity="center_horizontal"
            android:text="center_horizontal" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:background="#bcf5b1"
            android:gravity="right"
            android:text="right" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:background="#aacaff"
            android:gravity="center"
            android:text="center" />

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:background="#d6c6cd"
        android:orientation="vertical" >

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:textSize="24sp"
            android:text="layout_gravity=" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:layout_gravity="left"
            android:background="#bcf5b1"
            android:text="left" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:layout_gravity="center_horizontal"
            android:background="#aacaff"
            android:text="center_horizontal" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:layout_gravity="right"
            android:background="#bcf5b1"
            android:text="right" />

        <TextView
            android:layout_width="200dp"
            android:layout_height="40dp"
            android:layout_gravity="center"
            android:background="#aacaff"
            android:text="center" />

    </LinearLayout>

</LinearLayout>

ที่เกี่ยวข้อง


ดูเหมือนง่ายขึ้นหลังจากที่ได้เห็นมันด้วยสายตาขอบคุณ Suragch
Haritsinh Gohil

466

ความแตกต่าง

android:layout_gravityคือแรงโน้มถ่วงภายนอกของมุมมอง ระบุทิศทางที่ View ควรแตะที่ขอบของพาเรนต์

android:gravityคือแรงโน้มถ่วงภายในของมุมมองนั้น ระบุทิศทางที่เนื้อหาควรจัดตำแหน่ง

เทียบเท่า HTML / CSS

Android                 | CSS
————————————————————————+————————————
android:layout_gravity  | float
android:gravity         | text-align

เคล็ดลับง่าย ๆ ที่จะช่วยคุณจดจำ

ใช้layout-gravityเป็น "แรงโน้มถ่วงนอก"


มันสมเหตุสมผลกว่าเมื่อคุณมีพื้นฐานการพัฒนาเว็บ
Haritsinh Gohil

40

คำตอบสั้น ๆ : ใช้android:gravityหรือsetGravity()เพื่อควบคุมแรงโน้มถ่วงของมุมมองลูกทั้งหมดของคอนเทนเนอร์ ใช้android:layout_gravityหรือsetLayoutParams()เพื่อควบคุมแรงโน้มถ่วงของมุมมองส่วนบุคคลในคอนเทนเนอร์

เรื่องยาว: การควบคุมแรงโน้มถ่วงในคอนเทนเนอร์แบบวางเชิงเส้นเช่นLinearLayoutหรือRadioGroupมีสองวิธี:

1) เพื่อควบคุมแรงโน้มถ่วงของมุมมองย่อยทั้งหมดของมุมมองLinearLayoutคอนเทนเนอร์ (ตามที่คุณทำในหนังสือของคุณ) ให้ใช้android:gravity(ไม่ใช่android:layout_gravity) ในไฟล์ XML เลย์เอาต์หรือsetGravity()วิธีการในโค้ด

2) เพื่อควบคุมแรงโน้มถ่วงของมุมมองลูกในคอนเทนเนอร์ให้ใช้android:layout_gravityแอตทริบิวต์ XML ในโค้ดเราต้องได้LinearLayout.LayoutParamsมุมมองและกำหนดแรงโน้มถ่วง นี่คือตัวอย่างรหัสที่ตั้งค่าปุ่มไปด้านล่างในคอนเทนเนอร์แนวนอน:

import android.widget.LinearLayout.LayoutParams;
import android.view.Gravity;
...

Button button = (Button) findViewById(R.id.MyButtonId);
// need to cast to LinearLayout.LayoutParams to access the gravity field
LayoutParams params = (LayoutParams)button.getLayoutParams(); 
params.gravity = Gravity.BOTTOM;
button.setLayoutParams(params);

สำหรับLinearLayoutคอนเทนเนอร์แนวนอนความโน้มถ่วงแนวนอนของมุมมองลูกของมันจะถูกจัดชิดซ้ายทีละอันและไม่สามารถเปลี่ยนแปลงได้ การตั้งค่าandroid:layout_gravityเป็นcenter_horizontalไม่มีผลใด ๆ แรงโน้มถ่วงในแนวตั้งเริ่มต้นคือ center (หรือ center_vertical) และสามารถเปลี่ยนเป็นด้านบนหรือล่าง ที่จริงแล้วค่าเริ่มต้นlayout_gravityคือ-1แต่ Android วางไว้ตรงกลางในแนวตั้ง

ในการเปลี่ยนตำแหน่งแนวนอนของมุมมองเด็กในคอนเทนเนอร์เส้นแนวนอนเราสามารถใช้layout_weightระยะขอบและระยะห่างของมุมมองเด็ก

ในทำนองเดียวกันสำหรับคอนเทนเนอร์มุมมองกลุ่มแนวตั้งแรงโน้มถ่วงแนวดิ่งของมุมมองลูกของมันจะถูกจัดเรียงไว้ด้านล่างและอีกมุมหนึ่งไม่สามารถเปลี่ยนแปลงได้ แรงโน้มถ่วงแนวนอนเริ่มต้นคือศูนย์กลาง (หรือcenter_horizontal) และสามารถเปลี่ยนเป็นซ้ายหรือขวาได้

ที่จริงแล้วมุมมองลูกเช่นปุ่มยังมีandroid:gravityแอตทริบิวต์ XML และsetGravity()วิธีการควบคุมมุมมองลูกของมัน - ข้อความในนั้น Button.setGravity(int)มีการเชื่อมโยงนี้รายการ developer.android.com


36

จากสิ่งที่ฉันสามารถรวบรวมlayout_gravityคือแรงดึงดูดของมุมมองภายในพ่อแม่และแรงโน้มถ่วงคือแรงโน้มถ่วงของเด็ก ๆ ในมุมมองนั้น

ฉันคิดว่ามันถูกต้อง แต่วิธีที่ดีที่สุดในการค้นหาคือการเล่น



12

หากเราต้องการกำหนดแรงโน้มถ่วงของเนื้อหาในมุมมองจากนั้นเราจะใช้ "android: แรงโน้มถ่วง" และถ้าเราต้องการตั้งค่าแรงโน้มถ่วงของมุมมองนี้ (โดยรวม) ภายในมุมมองหลักแล้วเราจะใช้ "android: layout_gravity"


8

แค่คิดว่าฉันจะเพิ่มคำอธิบายของตัวเองที่นี่ - มาจากพื้นหลังบน iOS นี่คือวิธีที่ฉันทำให้เป็นคำสองคำใน iOS: "Layout Gravity" ส่งผลกระทบต่อตำแหน่งของคุณในการกำกับ "แรงโน้มถ่วง" ส่งผลต่อตำแหน่งของการดูย่อยภายในตัวคุณ กล่าวอีกทางหนึ่งว่าเค้าโครงแรงโน้มถ่วงวางตำแหน่งตัวคุณเองในขณะที่แรงโน้มถ่วงจัดตำแหน่งลูกของคุณ


7

มีความแตกต่างอีกหลายคนในและgravity layout-gravityฉันจะอธิบายประสบการณ์ของฉันเกี่ยวกับ 2 แนวคิดนี้ ( ข้อมูลทั้งหมดที่ฉันได้รับเนื่องจากการสังเกตและบางเว็บไซต์ )

การใช้ Gravity และ Layout-gravity ในFrameLayout.....

บันทึก:-

  1. แรงโน้มถ่วงจะใช้ภายในดูเนื้อหาที่ViewGroup Layoutเป็นผู้ใช้บางคนมีคำตอบและมันก็เป็นเหมือนกันสำหรับทุก

  2. Layout-gravity ใช้กับมุมมองพาเรนต์เนื่องจากผู้ใช้บางรายมีคำตอบ

  3. Gravity and Layout-gravityเป็นงานที่เป็นประโยชน์มากขึ้นกับFrameLayoutพระเกศา We can't use Gravity and Layout-gravityในแท็กของ FrameLayout ....

  4. เราสามารถตั้งค่าดูเด็ก ๆ ที่อยู่ในการใช้FrameLayoutlayout-gravity

  5. เราสามารถใช้ทุกค่าเดียวของแรงโน้มถ่วงภายใน FrameLayout (เช่น: - center_vertical, center_horizontal, center, topฯลฯ ) แต่มันก็เป็นไปไม่ได้กับ ViewGroup เลย์เอาต์อื่น ๆ

  6. FrameLayoutLayout-gravityทำงานอย่างเต็มที่ใน ตัวอย่าง: - ถ้าคุณทำงานFrameLayoutคุณไม่จำเป็นต้องเปลี่ยนทั้งเค้าโครงเพื่อเพิ่มมุมมองใหม่ คุณเพิ่งเพิ่มมุมมองเป็นครั้งสุดท้ายในFrameLayoutและให้Layout-gravityคุณค่ากับเขา( นี่คือข้อได้เปรียบของเลย์เอาต์แรงโน้มถ่วงด้วย FrameLayout )

ดูตัวอย่าง ......

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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="100dp"
        android:textSize="25dp"
        android:background="#000"
        android:textColor="#264bd1"
        android:gravity="center"
        android:layout_gravity="center"
        android:text="Center Layout Gravity"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:textSize="25dp"
        android:background="#000"
        android:textColor="#1b64b9"
        android:gravity="bottom"
        android:layout_gravity="bottom|center"
        android:text="Bottom Layout Gravity" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:textSize="25dp"
        android:background="#000"
        android:textColor="#d75d1c"
        android:gravity="top"
        android:layout_gravity="top|center"
        android:text="Top Layout Gravity"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:textSize="25dp"
        android:background="#000"
        android:layout_marginTop="100dp"
        android:textColor="#d71f1c"
        android:gravity="top|right"
        android:layout_gravity="top|right"
        android:text="Top Right Layout Gravity"/>


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:textSize="25dp"
        android:background="#000"
        android:layout_marginBottom="100dp"
        android:textColor="#d71cb2"
        android:layout_gravity="bottom"
        android:gravity="bottom"
        android:text="Top Left Layout Gravity"/>

</FrameLayout>

เอาท์พุท: -

G1

การใช้ Gravity และ Layout-gravity ใน LinearLayout .....

Gravityทำงานเหมือนข้างบน แต่ที่นี่แตกต่างมันคือการที่เราสามารถใช้แรงโน้มถ่วงภายในLinearLayout Viewและที่ไม่ได้อยู่ในที่เป็นไปได้RelativeLayout ViewFrameLayout View

LinearLayout พร้อมการวางแนวตั้ง ....

หมายเหตุ: - ที่นี่เราสามารถตั้งค่าได้ 3 ค่าlayout_gravityคือ ( left| right| center(เรียกอีกอย่างว่าcenter_horizontal))

ได้ดูตัวอย่าง: -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="100dp"
        android:textSize="25dp"
        android:background="#000"
        android:textColor="#264bd1"
        android:gravity="center"
        android:layout_gravity="center_horizontal"
        android:text="Center Layout Gravity \nor \nCenter_Horizontal"/>

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:textSize="25dp"
        android:background="#000"
        android:layout_marginTop="20dp"
        android:textColor="#d75d1c"
        android:layout_gravity="right"
        android:text="Right Layout Gravity"/>


    <TextView
        android:layout_width="wrap_content"
        android:layout_height="80dp"
        android:textSize="25dp"
        android:background="#000"
        android:layout_marginBottom="100dp"
        android:textColor="#d71cb2"
        android:layout_gravity="left"
        android:layout_marginTop="20dp"
        android:gravity="bottom"
        android:text="Left Layout Gravity"/>

</LinearLayout>

เอาท์พุท: -

G2

LinearLayout พร้อมการวางแนวนอน ....

หมายเหตุ: - ที่นี่เราสามารถตั้งค่าได้ 3 ค่าlayout_gravityคือ ( top| bottom| center(เรียกอีกอย่างว่าcenter_vertical))

ได้ดูตัวอย่าง: -

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:orientation="horizontal"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="120dp"
        android:layout_height="100dp"
        android:textSize="25dp"
        android:background="#000"
        android:textColor="#264bd1"
        android:gravity="center"
        android:layout_gravity="bottom"
        android:text="Bottom \nLayout \nGravity"/>

    <TextView
        android:layout_width="120dp"
        android:layout_height="100dp"
        android:textSize="25dp"
        android:background="#000"
        android:layout_marginTop="20dp"
        android:textColor="#d75d1c"
        android:layout_gravity="center"
        android:text="Center \nLayout \nGravity"/>


    <TextView
        android:layout_width="150dp"
        android:layout_height="100dp"
        android:textSize="25dp"
        android:background="#000"
        android:layout_marginBottom="100dp"
        android:textColor="#d71cb2"
        android:layout_gravity="left"
        android:layout_marginTop="20dp"
        android:text="Left \nLayout \nGravity"/>

</LinearLayout>

เอาท์พุท: -

g3

หมายเหตุ: - เราไม่สามารถใช้layout_gravityในRelativeLayout Viewsแต่เราสามารถใช้gravityชุดRelativeLayoutของเด็กให้อยู่ในตำแหน่งเดียวกัน ....


1
หากคุณตั้งค่าtextColorสีขาวในทุกกรณีviewมันจะดีมาก : D
Pratik Butani

คุณแน่ใจไหม? มันจะดูขาวดำนั่นคือเหตุผลที่ฉันใช้สีที่แตกต่างกันสำหรับทุกมุมมอง
sushildlh

6

เคล็ดลับง่ายๆในการจดจำสิ่งนี้คือแรงโน้มถ่วงที่ใช้กับเราภายในโลก ดังนั้นandroid:gravityสำหรับภายในมุมมอง

rememeber ออกในการวางออก _gravityซึ่งจะช่วยให้คุณจำไว้ว่าandroid:layout_gravityจะอ้างถึงนอกมุมมอง


5

บางสิ่งที่ฉันเห็นในบล็อกของ Sandip ที่ฉันเกือบจะพลาดแก้ไขปัญหาของฉัน เขาบอกlayout_gravityว่าไม่ได้ทำงานLinearLayoutกับ

หากคุณกำลังใช้LinearLayoutและการตั้งค่าแรงโน้มถ่วงกำลังผลักดันคุณ (เช่นฉัน) ให้เปลี่ยนไปใช้อย่างอื่น

จริง ๆ แล้วฉันเปลี่ยนไปใช้RelativeLayoutแล้วlayout_alignParentLeftและlayout_alignParentRightใน 2 มีTextViews เพื่อให้พวกเขาในหนึ่งบรรทัดเพื่อไปทางซ้ายและขวาสุด


4

ความแตกต่างพื้นฐานระหว่างสองคือ -

android: แรงโน้มถ่วงใช้สำหรับองค์ประกอบลูกในมุมมอง

android: layout_gravityใช้สำหรับองค์ประกอบนี้เทียบกับมุมมองหลัก


3

android:gravityใช้เพื่อระบุวิธีการวางเนื้อหาของวัตถุภายในวัตถุเอง อีกคำหนึ่ง Android: แรงโน้มถ่วงถูกใช้เพื่อระบุแรงโน้มถ่วงของเนื้อหาของมุมมอง

android:layout_gravity คือการระบุแหล่งที่มาที่เด็กสามารถให้กับผู้ปกครองเพื่อระบุแรงโน้มถ่วงมุมมองภายในผู้ปกครอง

สำหรับรายละเอียดเพิ่มเติมคุณสามารถเยี่ยมชม

http://developer.android.com/reference/android/widget/LinearLayout.LayoutParams.html


2
ฉันคิดว่าไม่จำเป็นต้องมีคำตอบใหม่เนื่องจากมีคำตอบหลายคำตอบอยู่แล้วและมีเนื้อหาเกือบเหมือนกัน!
Paresh Mayani

3

แรงโน้มถ่วง:ช่วยให้คุณย้ายเนื้อหาภายในคอนเทนเนอร์ (วิธีการวางมุมมองย่อย)

สำคัญ: (เลื่อนไปตามแกน X หรือแกน Y ภายในพื้นที่ว่าง)

ตัวอย่าง:สมมุติว่าคุณต้องทำงานกับ LinearLayout (Height: match_parent, Width: match_parent) เป็นองค์ประกอบระดับรูทคุณจะมีพื้นที่ว่างเต็มเฟรม และมุมมองเด็กพูดว่า 2 TextViews (ความสูง: wrap_content, ความกว้าง: wrap_content) ภายใน LinearLayout สามารถเคลื่อนย้ายไปรอบ ๆ พร้อมแกน x / y โดยใช้ค่าที่สอดคล้องกันสำหรับแรงโน้มถ่วงกับผู้ปกครอง

Layout_Gravity:อนุญาตให้คุณแทนที่พฤติกรรมแรงโน้มถ่วงหลักเท่านั้นตามแนวแกน x

สำคัญ: (ย้าย [แทนที่] ตามแกน X ภายในพื้นที่ว่าง)

ตัวอย่าง:หากคุณจำตัวอย่างก่อนหน้านี้เรารู้ว่าแรงโน้มถ่วงทำให้เราสามารถเคลื่อนที่ไปตามแกน x / y ได้เช่น TextViews สถานที่ภายใน LinearLayout สมมติว่า LinearLayout ระบุแรงโน้มถ่วง: กึ่งกลาง หมายความว่าทุก TextView จะต้องอยู่กึ่งกลางทั้งในแนวตั้งและแนวนอน ตอนนี้ถ้าเราต้องการ TextView อันใดอันหนึ่งไปทางซ้าย / ขวาเราสามารถแทนที่พฤติกรรมแรงโน้มถ่วงที่ระบุโดยใช้ layout_gravity บน TextView

โบนัส:หากคุณขุดลึกลงไปคุณจะพบว่าข้อความภายใน TextView ทำหน้าที่เป็นมุมมองย่อย ดังนั้นหากคุณใช้แรงโน้มถ่วงกับ TextView ข้อความภายใน TextView จะเลื่อนไปมา (แนวคิดทั้งหมดใช้ที่นี่ด้วย)


1

แรงโน้มถ่วงใช้เพื่อตั้งค่าการจัดแนวข้อความในมุมมอง แต่ layout_gravity ใช้เพื่อกำหนดมุมมองด้วยตนเอง ให้ยกตัวอย่างถ้าคุณต้องการจัดตำแหน่งข้อความที่เขียนใน editText จากนั้นใช้แรงโน้มถ่วงและคุณต้องการจัดตำแหน่ง textText หรือปุ่มใด ๆ หรือมุมมองใด ๆ จากนั้นใช้ layout_gravity ดังนั้นมันจึงง่ายมาก


1

แรงโน้มถ่วง : ใช้สำหรับการดูง่าย ๆ เช่น textview, edittext เป็นต้น

layout_gravity : ใช้สำหรับมุมมองปัจจุบันเฉพาะแรงโน้มถ่วงในบริบทของมุมมองพาเรนต์แบบสัมพันธ์เช่น Linear Layout หรือ FrameLayout เพื่อให้มุมมองอยู่กึ่งกลางหรือแรงโน้มถ่วงอื่น ๆ ของพาเรนต์


layout_gravity: ใช้สำหรับมุมมองปัจจุบันเท่านั้นแรงโน้มถ่วงในบริบทของผู้ปกครองที่เกี่ยวข้องไม่ใช่มุมมองอื่น ๆ ที่อยู่ภายในของผู้ปกครอง
Chintak Patel

0
android:gravity

ใช้สำหรับปรับเนื้อหาของมุมมองที่สัมพันธ์กับตำแหน่งที่ระบุ (พื้นที่ที่จัดสรร) android:gravity="left" จะไม่ทำอะไรเลยถ้าlayout_widthเท่ากับ"wrap_content"

android:layout_gravity 

ใช้สำหรับการดูตัวเองสัมพันธ์กับพาเรนต์หรือไฟล์เลย์เอาต์


0

android:gravity -> กำหนดแรงโน้มถ่วงของเนื้อหาของมุมมองที่ใช้

android:layout_gravity -> กำหนดแรงโน้มถ่วงของมุมมองหรือเค้าโครงของผู้ปกครอง


0

แรงโน้มถ่วง - ใช้กับมุมมองของตัวเอง

เค้าโครงแรงโน้มถ่วง --- ใช้เพื่อดูที่เกี่ยวข้องกับแม่ของมัน


0

android:gravityชุดแรงโน้มถ่วง (ตำแหน่ง) ของเด็กในขณะที่android:layout_gravityชุดตำแหน่งในมุมมองของตัวเอง หวังว่ามันจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.