LinearLayout的gravity屬性以及其子元素的layout_gravity何時有效;RelativeLayout如何調整其子元素位置只能用子元素中的屬性來控制,用RelativeLayout中的gravity無法控制!!!


LinearLayout的gravity屬性以及其子元素的layout_gravity何時有效;RelativeLayout如何調整其子元素位置只能用子元素中的屬性來控制,用RelativeLayout中的gravity無法控制!!!

 

LinearLayout的gravity屬性以及其子元素的layout_gravity何時有效

轉自:http://www.cnblogs.com/xiaoran1129/archive/2013/03/26/2982733.html

 

相信對於Android的初學者來說,大家都曾經被layout里這兩個極其相似的屬性迷惑過。

簡單使用一下搜索工具,我們就不難找到下面這樣的答案:

layout_gravity 表示組件自身在父組件中的位置 
gravity             表示組件的子組件在組件中的位置

看似很簡單嘛~)

貌似大伙瞅一眼就明白了。今天我要說的就是這貌似瞅一眼就明白的道理。 
為什么這么簡單的道理,總有同學會發現,在“某些時候”,layout_gravity這個屬性不好使了,失去了它應有的作用。

於是同學們又開始使用搜索工具,一邊還不停的罵:Google做的這個layout真他媽的不好使! 
下面我們就網上找來的一個例子來簡單描述一種layout_gravity失效的情況。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- android:gravity設置了按鈕上面的文字的顯示位置,而android:layout_gravity設置了按鈕在布局中的顯示位置。 –>
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  4.         android:orientation="vertical"
  5.         android:layout_width="fill_parent"
  6.         android:layout_height="wrap_content">
  7.         <Button android:layout_width="250dip"
  8.                 android:gravity="right"
  9.                 android:layout_height="wrap_content"
  10.                 android:text="我居右顯示"
  11.                 android:layout_gravity="right" />;
  12. </LinearLayout>
復制代碼

這段代碼的展現效果如下:!

 

 

然后我們再看下面這段代碼:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <!-- android:gravity設置了按鈕上面的文字的顯示位置,而android:layout_gravity設置了按鈕在布局中的顯示位置。 –>
  3. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  4.         android:layout_width="fill_parent"
  5.         android:layout_height="wrap_content">
  6.         <Button android:layout_width="250dip"
  7.                 android:gravity="right"
  8.                 android:layout_height="wrap_content"
  9.                 android:text="我居右顯示"
  10.                 android:layout_gravity="right" />
  11. </LinearLayout>
復制代碼

這段代碼我們一樣設置了android:layout_gravity="right",但是它的展現效果卻是下面這樣的:

 

 

於是我們前面所說的情況就發生了,“Google做的這個layout真他媽的不好使!”

問題究竟出在哪里了呢? 
細心一點的同學就會發現,下面的這段代碼,最外層的LinearLayout少了這樣一個屬性:android:orientation="vertical" 
不錯,正是缺少了這個屬性才導致了android:layout_gravity="right"的失效。 
因為LinearLayout默認的是:android:orientation="horizontal" "

也就是說,只有在作為父layout的LinearLayout是android:orientation="vertical" 的時候,android:layout_gravity="right"才會生效。

到這里本次“講座”可以結束了嗎? No!

看完上面的內容,有同學也許還會發現,當外層的LinearLayout為android:orientation="vertical" 的時候,android:layout_gravity="bottom"失效了

看到這里相信大家都明白了

下面我們還需要做一個簡單的總結: 
當作為父layout的LinearLayout的屬性為android:orientation="vertical" 的時候,android:layout_gravity="?"這里設為橫向的時候才能生效。比如:left,right,center_horizontal等

當作為父layout的LinearLayout的屬性為android:orientation="horizental" 的時候,android:layout_gravity="?"這里設為縱向的時候才能生效。比如:top,bottom,center_vertical等;

有一個比較特殊的是center,不管是橫向還是縱向的時候,它總有一個方向起作用

另外有幾個別急面生的:fill_vertical,fill_horizontal,fill,clip_vertical,clip_horizontal 
這幾個以前沒留意過,莫非是新版本的SDK中,新引進的?分散對齊?很迷惑。 
有用過的同學還請不吝賜教一下

 

RelativeLayout如何調整其子元素位置只能用子元素中的屬性來控制,用RelativeLayout中的gravity無法控制!!!

轉自:http://blog.sina.com.cn/s/blog_4e1e357d0101am70.html

android RelativeLayout 內容居中解決辦法:

使用Linearlayout本來利用父控件的gravity屬性是很好解決的。但是對應RelativeLayout雖然有 gravity屬性,但是如果你使用,你會發現實際他是不能生效的
 
解決辦法:
在RelativeLayout的 子空間里,使用以下3個屬性就行了。
 
                    android:layout_centerVertical="true"
 
                    android:layout_centerHorizontal="true"
 
gravity 一般是針對linearlayout會使用很方便。

 

 

轉自:http://blog.sina.com.cn/s/blog_6efce07e01012zue.html
 
 最近在遇到RelativeLayout里的gravity屬性給它復制center_horizontal或者center都不能居中它的子組件,后來找到了替代方法,只要在它的每個 子組件里加上android:layout_centerHorizontal="true" 就可以了
 
                    android:layout_centerInParent="true"


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM