详解Android布局中gravity与layout_gravity属性
在android布局中,我們經常會用到“重心”-gravity這個屬性。但是gravity有不同的類型:
- gravity
- layout_gravity
- 相對布局中的layout_center等屬性
今天我們就來具體說說。
1、gravity
gravity屬性是對控件自身內容對自己的限定,拿布局文件test.xml舉例來說:
此時在TextView中并沒有對gravity屬性進行操作,文字內容如上圖。接下來,我們繼續設置TextView的gravity屬性,觀察效果:
2、layout_gravity屬性
與gravity屬性不同的是,layout_gravity屬性是用來設置該View相對與父View的位置,具體情況就個人判斷有下面這4種情況:
另外還有一種在父布局橫或縱設置wrap_content時,如果在該方向設置layout_gravity屬性。我直接在一個布局中,把這5種情況列出來,下面是我的布局文件代碼:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.primexiao.myapplication.MainActivity"> //第4種情況 <LinearLayout android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:background="#00f0f0"android:orientation="vertical"><TextView android:id="@+id/tv1"android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_centerInParent="true"android:text="我是測試內容"android:background="#000000"android:layout_gravity="center_horizontal"android:textColor="#ffffff"android:layout_width="100dp"android:layout_height="100dp" /> </LinearLayout> //第1種情況<LinearLayout android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:background="#00ff00"android:orientation="vertical"><TextView android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_centerInParent="true"android:text="我是測試內容"android:background="#000000"android:textColor="#ffffff"android:layout_gravity="center_vertical"android:layout_width="100dp"android:layout_height="100dp" /></LinearLayout>//第3種情況<LinearLayout android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:background="#00f0f0"android:orientation="horizontal"><TextView android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_centerInParent="true"android:text="我是測試內容"android:background="#000000"android:layout_gravity="center_vertical"android:textColor="#ffffff"android:layout_width="100dp"android:layout_height="100dp" /></LinearLayout>//第2種情況<LinearLayout android:layout_width="match_parent"android:layout_height="0dp"android:layout_weight="1"android:background="#ff0000"android:orientation="horizontal"><TextView android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_centerInParent="true"android:text="我是測試內容"android:background="#000000"android:layout_gravity="center_horizontal"android:textColor="#ffffff"android:layout_width="100dp"android:layout_height="100dp" /></LinearLayout>//第5種情況<LinearLayout android:layout_width="wrap_content"android:layout_height="0dp"android:layout_weight="1"android:background="#fff000"android:orientation="horizontal"><TextView android:layout_centerHorizontal="true"android:layout_centerVertical="true"android:layout_centerInParent="true"android:text="我是測試內容"android:background="#000000"android:layout_gravity="center_horizontal"android:textColor="#ffffff"android:layout_width="100dp"android:layout_height="100dp" /></LinearLayout> </LinearLayout>效果圖如下:
我們可以看到第1和第2種情況下,layout_gravity這一屬性根本沒有起到作用,個人看法是子控件如果選擇橫或縱居中,這種屬性聲明是不能和父布局的排列方式相沖的,這個坑我先替你們踩著:D。
3、相對布局中的layout_center屬性
之前遇到過這么一個問題,在RelativeLayout中設置layount_gravity屬性,發現并不能實現居中效果,并且layout_gravity也是手動輸入,期間并沒有智能提示。后來發現相對布局中,有layout_centerX這么一個屬性,讓我們來試一下:
待續。
如果覺得這篇文章對你有幫助的話,歡迎頂+評論:D
總結
以上是生活随笔為你收集整理的详解Android布局中gravity与layout_gravity属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [MySQL | Python] MyS
- 下一篇: judgement_mna_2016