在程序中設(shè)置android:gravity 和 android:layout_Gravity屬性

在進(jìn)行UI布局的時(shí)候冒签,可能經(jīng)常會(huì)用到 android:gravity 和 android:layout_Gravity 這兩個(gè)屬性。

關(guān)于這兩個(gè)屬性的區(qū)別,網(wǎng)上已經(jīng)有很多人進(jìn)行了說(shuō)明诞吱,這邊再簡(jiǎn)單說(shuō)一下。 (資料來(lái)自網(wǎng)絡(luò))

LinearLayout有兩個(gè)非常相似的屬性:
android:gravity與android:layout_gravity儒洛。

他們的區(qū)別在于:

android:gravity 屬性是對(duì)該view中內(nèi)容的限定.比如一個(gè)button 上面的text. 你可以設(shè)置該text 相對(duì)于view的靠左精耐,靠右等位置.a(chǎn)ndroid:layout_gravity是用來(lái)設(shè)置該view相對(duì)與父view 的位置.比如一個(gè)button 在linearlayout里狼速,你想把該button放在linearlayout里靠左、靠右等位置就可以通過(guò)該屬性設(shè)置.

即android:gravity用于設(shè)置View中內(nèi)容相對(duì)于View組件的對(duì)齊方式卦停,而android:layout_gravity用于設(shè)置View組件相對(duì)于Container的對(duì)齊方式向胡。

原理跟android:paddingLeft恼蓬、android:layout_marginLeft有點(diǎn)類似。如果在按鈕上同時(shí)設(shè)置這兩個(gè)屬性僵芹。
android:paddingLeft="30px" 按鈕上設(shè)置的內(nèi)容離按鈕左邊邊界30個(gè)像素android:layout_marginLeft="30px" 整個(gè)按鈕離左邊設(shè)置的內(nèi)容30個(gè)像素

下面回到正題处硬, 我們可以通過(guò)設(shè)置android:gravity="center"來(lái)讓EditText中的文字在EditText組件中居中顯示;同時(shí)我們?cè)O(shè)置EditText的android:layout_gravity="right"來(lái)讓EditText組件在LinearLayout中居右顯示拇派『稍看下效果:

正如我們所看到的,在EditText中件豌,其中的文字已經(jīng)居中顯示了疮方,而EditText組件自己也對(duì)齊到了LinearLayout的右側(cè)。

附上布局文件:

<LinearLayout  
   xmlns:android="http://schemas.android.com/apk/res/android"  
android:orientation="vertical"  
android:layout_width="fill_parent"  
android:layout_height="fill_parent">  
<EditText  
android:layout_width="wrap_content"  
android:gravity="center"  
android:layout_height="wrap_content"  
android:text="one"  
android:layout_gravity="right"/>  
</LinearLayout>  

那么上面是通過(guò)布局文件的方式來(lái)設(shè)置的茧彤。骡显,相信大家都曾寫過(guò),那么如何通過(guò)Java代碼來(lái)設(shè)置組件的位置呢曾掂?

依然考慮實(shí)現(xiàn)上述效果惫谤。

通過(guò)查看SDK,發(fā)現(xiàn)有一個(gè)setGravity方法珠洗, 顧名思義溜歪, 這個(gè)應(yīng)該就是用來(lái)設(shè)置Button組件中文字的對(duì)齊方式的方法了。
仔細(xì)找了一圈险污,沒(méi)有發(fā)現(xiàn)setLayoutgravity方法痹愚, 有點(diǎn)失望。 不過(guò)想想也對(duì)蛔糯, 如果這邊有了這個(gè)方法拯腮, 將Button放在不支持Layout_Gravity屬性的Container中如何是好!

于是想到蚁飒, 這個(gè)屬性有可能在Layout中 动壤, 于是仔細(xì)看了看LinearLayout 的 LayoutParams, 果然有所發(fā)現(xiàn)淮逻, 里面有一個(gè) gravity 屬性琼懊,相信這個(gè)就是用來(lái)設(shè)置組件相對(duì)于容器本身的位置了,沒(méi)錯(cuò)爬早,應(yīng)該就是他了哼丈。

實(shí)踐后發(fā)現(xiàn),如果如此筛严, 附上代碼醉旦,各位自己看下。

代碼比較簡(jiǎn)單,但是發(fā)現(xiàn)它們還是花了我一點(diǎn)時(shí)間的车胡。

Button button  = new Button(this);  
button.setText("One");  
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);  
//此處相當(dāng)于布局文件中的Android:layout_gravity屬性  
lp.gravity = Gravity.RIGHT;  
button.setLayoutParams(lp);  
//此處相當(dāng)于布局文件中的Android:gravity屬性  
button.setGravity(Gravity.CENTER);  
  
LinearLayout linear = new LinearLayout(this);  
//注意檬输,對(duì)于LinearLayout布局來(lái)說(shuō),設(shè)置橫向還是縱向是必須的匈棘!否則就看不到效果了丧慈。  
linear.setOrientation(LinearLayout.VERTICAL);  
linear.addView(button);  
setContentView(linear);  

或者這樣也可以:
Button button = new Button(this);
button.setText("One");
//此處相當(dāng)于布局文件中的Android:gravity屬性
button.setGravity(Gravity.CENTER);

LinearLayout linear = new LinearLayout(this);  
//注意,對(duì)于LinearLayout布局來(lái)說(shuō)主卫,設(shè)置橫向還是縱向是必須的逃默!否則就看不到效果了。  
linear.setOrientation(LinearLayout.VERTICAL);  
  
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);  
//此處相當(dāng)于布局文件中的Android:layout_gravity屬性  
lp.gravity = Gravity.RIGHT;  
  
linear.addView(button, lp);  
setContentView(linear);  

好了簇搅,效果圖就不上了笑旺,跟上面的一樣。 就講這么多馍资。

另外筒主,要設(shè)置在RelativeLayout中的位置時(shí)使用addRule方法,如下:

params = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
mContainer.addView(progress,params);

如果覺(jué)得本文對(duì)您有幫助鸟蟹, 還請(qǐng)留言支持一下乌妙, 非常感謝!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末建钥,一起剝皮案震驚了整個(gè)濱河市藤韵,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌熊经,老刑警劉巖泽艘,帶你破解...
    沈念sama閱讀 222,865評(píng)論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異镐依,居然都是意外死亡匹涮,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門槐壳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)然低,“玉大人,你說(shuō)我怎么就攤上這事务唐■ㄈ粒” “怎么了?”我有些...
    開封第一講書人閱讀 169,631評(píng)論 0 364
  • 文/不壞的土叔 我叫張陵枫笛,是天一觀的道長(zhǎng)吨灭。 經(jīng)常有香客問(wèn)我,道長(zhǎng)刑巧,這世上最難降的妖魔是什么喧兄? 我笑而不...
    開封第一講書人閱讀 60,199評(píng)論 1 300
  • 正文 為了忘掉前任涩咖,我火速辦了婚禮,結(jié)果婚禮上繁莹,老公的妹妹穿的比我還像新娘。我一直安慰自己特幔,他們只是感情好咨演,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,196評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蚯斯,像睡著了一般薄风。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拍嵌,一...
    開封第一講書人閱讀 52,793評(píng)論 1 314
  • 那天遭赂,我揣著相機(jī)與錄音,去河邊找鬼横辆。 笑死撇他,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的狈蚤。 我是一名探鬼主播困肩,決...
    沈念sama閱讀 41,221評(píng)論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼脆侮!你這毒婦竟也來(lái)了锌畸?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,174評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤靖避,失蹤者是張志新(化名)和其女友劉穎潭枣,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幻捏,經(jīng)...
    沈念sama閱讀 46,699評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盆犁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,770評(píng)論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了篡九。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蚣抗。...
    茶點(diǎn)故事閱讀 40,918評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖瓮下,靈堂內(nèi)的尸體忽然破棺而出翰铡,到底是詐尸還是另有隱情,我是刑警寧澤讽坏,帶...
    沈念sama閱讀 36,573評(píng)論 5 351
  • 正文 年R本政府宣布锭魔,位于F島的核電站,受9級(jí)特大地震影響路呜,放射性物質(zhì)發(fā)生泄漏迷捧。R本人自食惡果不足惜织咧,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,255評(píng)論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望漠秋。 院中可真熱鬧笙蒙,春花似錦、人聲如沸庆锦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)搂抒。三九已至艇搀,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間求晶,已是汗流浹背焰雕。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芳杏,地道東北人矩屁。 一個(gè)月前我還...
    沈念sama閱讀 49,364評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像爵赵,于是被迫代替她去往敵國(guó)和親档插。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,926評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,336評(píng)論 25 707
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程亚再,因...
    小菜c閱讀 6,451評(píng)論 0 17
  • 歡迎Follow我的GitHub, 關(guān)注我的CSDN. 其余參考Android目錄. 轉(zhuǎn)載請(qǐng)注明出處:http:/...
    passiontim閱讀 4,772評(píng)論 0 31
  • 你不快樂(lè)的每一天都不是你的 作者:費(fèi)爾南多·佩索阿(葡萄牙) 你不快樂(lè)的每一天都不是你的: 你只是虛度了它郭膛。無(wú)論你...
    240349fb902f閱讀 277評(píng)論 0 0
  • 我只是一件 夢(mèng)的衣裳 有風(fēng)的時(shí)候 無(wú)意進(jìn)了你心底 很多時(shí)候 ...
    巖桐詩(shī)社閱讀 215評(píng)論 3 10