Sự khác biệt giữa trọng lực và layout_gravity trong Android là gì?


1329

Tôi biết chúng ta có thể đặt các giá trị sau cho android:gravityandroid:layout_gravitycác thuộc tính:

  1. center
  2. center_vertical
  3. center_horizontal, Vân vân.

Nhưng tôi bối rối về cả hai điều này.

Sự khác biệt giữa việc sử dụng android:gravityvà là android:layout_gravitygì?


265
Thủ thuật dễ nhớ: Lấy "bố cục trọng lực" làm "Lay-bên ngoài trọng lực"
Vishnu Haridas

6
trung tâm == centre_vertical | centre_horizontal
Yousha Aleayoub

4
Những video này đã giúp tôi hiểu rất nhiều về sự khác biệt: youtube.com/watch?v=DxfYeAUd238 youtube.com/watch?v=1FyAIWLVcTc
Roni Castro

ImageViewDường như cư xử khác với TextView.
samis

Câu trả lời:


1347

Tên của họ sẽ giúp bạn:

  • android:gravityđặt trọng lực của nội dung (tức là các cuộc phỏng vấn của nó) về nội dung Viewđược sử dụng trên đó.
  • android:layout_gravityđặt trọng lực của Viewhoặc Layouttương đối với cha mẹ của nó.

Và một ví dụ là ở đây .


88
Về cơ bản, tất cả mọi thứ với layout_định nghĩa một cái gì đó ảnh hưởng đến các yếu tố bên ngoài.
Triang3l

29
Hãy xem, tôi thấy điều này thật buồn cười, bởi vì nếu tôi chỉ tắt tên, trực giác của tôi là cách khác. Mỗi lần, tôi nghĩ "layout_gravity" có nghĩa là "lực hấp dẫn cho cách Viewgroup này đưa ra nội dung của nó" và "trọng lực" là "nơi mà Chế độ xem này hấp dẫn".
Ogre

15
Vì vậy, điều gì xảy ra nếu android:gravityđược đặt sang trái và trẻ em của nó android:layout_gravityđược đặt sang phải? Những đứa trẻ sẽ phù hợp với bên nào?
Thupten

2
Như @Suragch đã nhận xét về câu trả lời của anh ấy, layout_gravity chỉ hoạt động trong linearLayout và FrameLayout. Tuyến tínhLayout có các ràng buộc với nó mặc dù.
Marco Luglio

1
@Thupten Câu hỏi rất hay. Tôi đoán một cái sẽ thắng thế (tôi đoán layout_gravity của trẻ em) và cái còn lại chỉ là mặc định cho cái đang thịnh hành.
Trilarion

523

Bên trong bên ngoài

  • gravitysắp xếp nội dung bên trong khung nhìn.
  • layout_gravitysắp xếp vị trí của khung cảnh bên ngoài chính nó.

Đôi khi nó cũng giúp nhìn thấy một hình ảnh. Màu xanh lá cây và màu xanh là TextViewsvà hai màu nền khác LinearLayouts.

nhập mô tả hình ảnh ở đây

Ghi chú

  • Các layout_gravitykhông làm việc cho quan điểm trong một RelativeLayout. Sử dụng nó cho các khung nhìn trong một LinearLayouthoặc FrameLayout. Xem câu trả lời bổ sung của tôi để biết thêm chi tiết.
  • Chiều rộng (hoặc chiều cao) của chế độ xem phải lớn hơn nội dung của chế độ xem. Nếu không gravitysẽ không có hiệu lực. Như vậy, wrap_contentgravitylà vô nghĩa với nhau.
  • Chiều rộng (hoặc chiều cao) của khung nhìn phải nhỏ hơn cha mẹ. Nếu không layout_gravitysẽ không có hiệu lực. Như vậy, match_parentlayout_gravitylà vô nghĩa với nhau.
  • Các layout_gravity=centertrông giống như layout_gravity=center_horizontalở đây vì họ đang ở trong một bố trí tuyến tính dọc. Bạn không thể tập trung theo chiều dọc trong trường hợp này, vì vậy layout_gravity=centerchỉ tập trung theo chiều ngang.
  • Câu trả lời này chỉ xử lý cài đặt gravitylayout_gravitytrên các khung nhìn trong bố cục. Để xem điều gì xảy ra khi bạn thiết lập gravitybố cục chính, hãy xem câu trả lời bổ sung mà tôi đã đề cập ở trên. (Tóm tắt: gravitykhông hoạt động tốt trên một RelativeLayoutnhưng có thể hữu ích với a LinearLayout.)

Vì vậy, hãy nhớ, layout _gravity sắp xếp một khung nhìn trong bố cục của nó . Trọng lực sắp xếp nội dung bên trong chế độ xem.

xml

Dưới đây là xml cho hình ảnh trên để bạn tham khảo:

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

Liên quan


có vẻ dễ dàng hơn sau khi nhìn thấy nó một cách trực quan, cảm ơn Suragch.
Haritsinh Gohil

467

Sự khác biệt

android:layout_gravitylà trọng lực bên ngoài của View. Chỉ định hướng mà Chế độ xem sẽ chạm vào đường viền của cha mẹ.

android:gravitylà trọng lực bên trong của Chế độ xem đó. Chỉ định theo hướng nào nội dung của nó sẽ căn chỉnh.

Tương đương HTML / CSS

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

Thủ thuật dễ dàng để giúp bạn nhớ

Lấy layout-gravitylà "Lay-bên ngoài trọng lực".


nó có ý nghĩa hơn khi bạn có nền tảng phát triển web.
Haritsinh Gohil

41

Câu trả lời ngắn: sử dụng android:gravityhoặc setGravity()để kiểm soát trọng lực của tất cả các khung nhìn con của một container; sử dụng android:layout_gravityhoặc setLayoutParams()để kiểm soát trọng lực của một chế độ xem riêng lẻ trong một thùng chứa.

Câu chuyện dài: để kiểm soát trọng lực trong một container bố trí tuyến tính như LinearLayouthay RadioGroup, có hai phương pháp:

1) Để kiểm soát mức độ nghiêm trọng của TẤT CẢ các chế độ xem con của một vùng LinearLayoutchứa (như bạn đã làm trong sách của mình), hãy sử dụng android:gravity(không android:layout_gravity) trong bố cục tệp XML hoặc setGravity()phương thức trong mã.

2) Để kiểm soát mức độ hấp dẫn của chế độ xem con trong vùng chứa của nó, hãy sử dụng android:layout_gravitythuộc tính XML. Trong mã, người ta cần có được LinearLayout.LayoutParamskhung nhìn và thiết lập trọng lực của nó. Dưới đây là một ví dụ mã đặt nút ở dưới cùng trong vùng chứa theo chiều ngang:

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);

Đối với LinearLayoutthùng chứa ngang , trọng lực ngang của chế độ xem con của nó được căn trái lần lượt và không thể thay đổi. Thiết android:layout_gravityđể center_horizontalkhông có tác dụng. Trọng lực dọc mặc định là trung tâm (hoặc centre_vertical) và có thể được thay đổi thành trên cùng hoặc dưới cùng. Trên thực tế, layout_gravitygiá trị mặc định là -1nhưng Android đặt nó ở giữa theo chiều dọc.

Để thay đổi vị trí ngang của chế độ xem con trong vùng chứa tuyến tính ngang, người ta có thể sử dụng layout_weight, lề và phần đệm của chế độ xem con.

Tương tự, đối với vùng chứa Nhóm Chế độ xem dọc, trọng lực dọc của chế độ xem con của nó được xếp thẳng hàng với nhau và không thể thay đổi. Trọng lực ngang mặc định là trung tâm (hoặc center_horizontal) và có thể thay đổi sang trái hoặc phải.

Trên thực tế, một khung nhìn con như nút cũng có android:gravitythuộc tính XML và setGravity()phương thức để kiểm soát các khung nhìn con của nó - văn bản trong nó. Cái Button.setGravity(int)này được liên kết với mục developer.android.com này .


36

Từ những gì tôi có thể thu thập layout_gravity là trọng lực của quan điểm đó bên trong cha mẹ của nó và trọng lực là trọng lực của những đứa trẻ bên trong quan điểm đó.

Tôi nghĩ điều này đúng nhưng cách tốt nhất để tìm hiểu là chơi xung quanh.



12

Nếu chúng ta muốn đặt trọng lực của nội dung trong một chế độ xem thì chúng ta sẽ sử dụng "android: vity" và nếu chúng ta muốn đặt trọng lực của chế độ xem này (nói chung) trong chế độ xem chính thì chúng ta sẽ sử dụng "android: layout_gravity ".


8

Chỉ cần nghĩ rằng tôi sẽ thêm lời giải thích của riêng mình ở đây - đến từ một nền tảng trên iOS, đây là cách tôi đã nội hóa hai thuật ngữ trong iOS: "Bố cục trọng lực" ảnh hưởng đến vị trí của bạn trong giám sát. "Trọng lực" ảnh hưởng đến vị trí của các cuộc phỏng vấn của bạn trong bạn. Nói một cách khác, Bố cục trọng lực định vị chính bạn trong khi trọng lực định vị con bạn.


7

Có nhiều sự khác biệt trong gravitylayout-gravity. Tôi sẽ giải thích kinh nghiệm của tôi về 2 khái niệm này ( Tất cả thông tin tôi có được do quan sát của tôi và một số trang web ).

Sử dụng trọng lực và bố trí trọng lực trong FrameLayout.....

Ghi chú:-

  1. Trọng lực được sử dụng bên trong Xem Nội dung khi một số Người dùng có câu trả lời và tất cả đều giống nhau ViewGroup Layout.

  2. Layout-gravity được sử dụng với Chế độ xem chính khi một số Người dùng có câu trả lời.

  3. Gravity and Layout-gravitycông việc hữu ích hơn với FrameLayouttrẻ em. We can't use Gravity and Layout-gravitytrong Thẻ của FrameLayout ....

  4. Chúng tôi có thể đặt Chế độ xem trẻ em bất kỳ nơi nào đang FrameLayoutsử dụng layout-gravity.

  5. Chúng ta có thể sử dụng tất cả các giá trị duy nhất của trọng lực bên trong FrameLayout (ví dụ: - center_vertical, center_horizontal, center, top, vv), nhưng nó không phải là có thể với ViewGroup Layouts khác.

  6. FrameLayouthoàn toàn làm việc trên Layout-gravity. Ví dụ: - Nếu bạn làm việc trên FrameLayoutthì bạn không cần thay đổi toàn bộ Bố cục để thêm Chế độ xem mới. Bạn chỉ cần thêm Chế độ xem là cuối cùng FrameLayoutvà cung cấp cho anh ta Layout-gravitygiá trị. ( Đây là phần phụ của bố cục trọng lực với FrameLayout ).

nhìn vào ví dụ ......

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

Đầu ra: -

g1

Sử dụng trọng lực và trọng lực bố trí trong linearLayout .....

Gravityhoạt động tương tự như trên nhưng ở đây khác biệt là chúng ta có thể sử dụng Gravity bên trong LinearLayout ViewRelativeLayout Viewđiều này là không thể FrameLayout View.

Tuyến tính với hướng dọc ....

Lưu ý: - Ở đây chúng ta chỉ có thể đặt 3 giá trị layout_gravityđó là ( left| right| center(còn gọi là center_horizontal)).

nhìn vào ví dụ: -

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

Đầu ra: -

g2

Tuyến tính với hướng ngang ....

Lưu ý: - Ở đây chúng ta cũng có thể đặt 3 giá trị layout_gravityđó là ( top| bottom| center(còn gọi là center_vertical)).

nhìn vào ví dụ: -

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

đầu ra: -

g3

Lưu ý: - Chúng tôi không thể sử dụng layout_gravitytrong RelativeLayout Viewsnhưng chúng tôi có thể sử dụng gravityđể thiết lập RelativeLayoutChilds với cùng vị trí ....


1
Nếu bạn đặt textColormàu trắng trong tất cả viewthì nó sẽ rất tuyệt. : D
Pratik Butani

Bạn có chắc không? Nó sẽ có màu đen và trắng, đó là lý do tại sao tôi sử dụng màu khác nhau cho mỗi Chế độ xem.
sushildlh

6

Một mẹo dễ nhớ để nhớ điều này là trọng lực áp dụng cho chúng ta bên trong trái đất. Vì vậy, android:gravitylà cho bên trong xem.

Rememeber sự ra trong lay ra _gravity đó sẽ giúp bạn nhớ rằng android:layout_gravitysẽ tham khảo bên ngoài quan điểm


5

Một cái gì đó tôi thấy trên blog của Sandip mà tôi gần như đã bỏ lỡ, đã khắc phục vấn đề của tôi. Ông nói layout_gravityKHÔNG LÀM VIỆC VỚI LinearLayout.

Nếu bạn đang sử dụng một LinearLayoutvà các cài đặt trọng lực đang khiến bạn phát điên (như tôi), thì hãy chuyển sang thứ khác.

Tôi thực sự đã chuyển sang RelativeLayoutsử dụng layout_alignParentLeftvà sau đó layout_alignParentRighttrên 2 TextViews để đưa chúng trên một dòng để đi xa bên trái và bên phải.


4

Sự khác biệt cơ bản giữa hai là

android: trọng lực được sử dụng cho các yếu tố con của khung nhìn.

android: layout_gravity được sử dụng cho thành phần này đối với chế độ xem chính.


3

android:gravityđược sử dụng để xác định cách đặt nội dung của đối tượng trong chính đối tượng đó. Nói cách khác, android: vity được sử dụng để chỉ định trọng lực của nội dung của chế độ xem.

android:layout_gravity là một sự quy kết đứa trẻ có thể cung cấp cho cha mẹ của nó, để xác định mức độ nghiêm trọng của quan điểm trong cha mẹ của nó.

Để biết thêm chi tiết bạn có thể truy cập

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


2
Tôi nghĩ rằng không cần câu trả lời mới vì có nhiều câu trả lời đã được đăng và với hầu hết các nội dung giống nhau!
Paresh Mayani

3

Trọng lực: Cho phép bạn di chuyển nội dung bên trong một thùng chứa. (Cách xem phụ sẽ được đặt).

Quan trọng: (Di chuyển dọc theo trục X hoặc trục Y trong không gian có sẵn).

Ví dụ: Giả sử nếu bạn đã làm việc với linearLayout (Chiều cao: match_parent, Width: match_parent) làm phần tử mức gốc, thì bạn sẽ có sẵn không gian khung hình đầy đủ; và các khung nhìn con cho biết 2 TextViews (Chiều cao: quấn_content, Width: quấn_content) bên trong linearLayout có thể được di chuyển xung quanh dọc theo trục x / y bằng cách sử dụng các giá trị tương ứng cho trọng lực trên cha mẹ.

Bố cục_Gravity: Cho phép bạn ghi đè hành vi trọng lực cha CHỈ dọc theo trục x.

Quan trọng: (M CHUYỂN [ghi đè] dọc theo trục X trong không gian có sẵn).

Ví dụ: Nếu bạn ghi nhớ ví dụ trước, chúng tôi biết trọng lực cho phép chúng tôi di chuyển dọc theo trục x / y, nghĩa là; vị trí TextViews bên trong linearLayout. Chúng ta hãy nói tuyến tính chỉ định lực hấp dẫn: trung tâm; có nghĩa là mọi TextView cần phải tập trung cả theo chiều dọc và chiều ngang. Bây giờ nếu chúng ta muốn một trong các TextView đi sang trái / phải, chúng ta có thể ghi đè hành vi trọng lực được chỉ định bằng cách sử dụng layout_gravity trên TextView.

Phần thưởng: nếu bạn đào sâu hơn, bạn sẽ thấy văn bản đó trong TextView đóng vai trò là chế độ xem phụ; vì vậy nếu bạn áp dụng lực hấp dẫn trên TextView, văn bản bên trong TextView sẽ di chuyển xung quanh. (toàn bộ khái niệm cũng áp dụng ở đây)


1

Trọng lực được sử dụng để đặt căn chỉnh văn bản trong chế độ xem nhưng layout_gravity được sử dụng để tự đặt chế độ xem. Hãy lấy một ví dụ nếu bạn muốn căn chỉnh văn bản được viết trong editText, sau đó sử dụng trọng lực và bạn muốn căn chỉnh chỉnh sửa này hoặc bất kỳ nút nào hoặc bất kỳ chế độ xem nào sau đó sử dụng layout_gravity, vì vậy nó rất đơn giản.


1

trọng lực : được sử dụng cho các chế độ xem đơn giản như textview, edittext, v.v.

layout_gravity : chỉ được sử dụng cho chế độ xem hiện tại trong bối cảnh của chế độ xem cha mẹ tương đối như Bố cục tuyến tính hoặc FrameLayout để tạo chế độ xem ở giữa hoặc bất kỳ trọng lực nào khác của bố mẹ.


layout_gravity: được sử dụng cho chế độ xem hiện tại chỉ trọng lực trong bối cảnh là cha mẹ tương đối của nó, chứ không phải các chế độ xem khác bên trong bố mẹ của nó.
Chintak Patel

0
android:gravity

được sử dụng để điều chỉnh nội dung của chế độ xem liên quan đến vị trí chỉ định của nó (khu vực được phân bổ). android:gravity="left" sẽ không làm gì nếu layout_widthbằng"wrap_content"

android:layout_gravity 

được sử dụng để xem chính nó liên quan đến tệp cha hoặc tập tin bố trí.


0

android:gravity -> Đặt mức độ hấp dẫn của nội dung của Chế độ xem được sử dụng trên.

android:layout_gravity -> Đặt mức độ hấp dẫn của chế độ xem hoặc Bố cục của phụ huynh


0

trọng lực - Áp dụng cho quan điểm riêng của mình.

layout -vity --- Áp dụng để xem liên quan đến cha mẹ của nó.


0

Bộ android:gravityđặt trọng lực (vị trí) của trẻ em trong khi android:layout_gravitythiết lập vị trí của chính khung nhìn. Hy vọng nó giúp

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.