最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android常用布局(FrameLayout、LinearLayout、RelativeLayout)詳解

 更新時間:2016年06月02日 10:58:04   作者:林彥君  
這篇文章主要為大家詳細介紹了Android常用布局FrameLayout、LinearLayout、RelativeLayout,感興趣的小伙伴們可以參考一下

很多開發(fā)者一聽說Android終端的屏幕尺寸五花八門,屏幕分辨率千奇百怪,就覺得Android開發(fā)在屏幕適配方面是必定是一件頭疼的事情。因為在Android問世之前,廣大開發(fā)者知道的UI解決方案大致分為兩類:

1、在Web開發(fā)中的CSS,一層一層的去層疊樣式。
2、在iOS開發(fā)中去計算每一個UIView的尺寸。

上面兩種方案,無論哪種方案面對碎片化嚴重的Android終端,那都是一場噩夢。好在Android提供了另一套解決方案來應(yīng)對嚴重的終端碎片化,這就是布局和9-patch。

這里想來說說布局,在Android SDK剛剛問世的時候,Android提供了AbsoluteLayout,F(xiàn)rameLayout,LinearLayout,RelativeLayout和Tablelayout五大布局來應(yīng)對終端碎片化問題。

但很快Android發(fā)現(xiàn)AbsoluteLayout是一個愚蠢的方案,在Android 1.5系統(tǒng)中就不再支持此布局,剩下的四個布局中,Tablelayout雖然依然被支持,但是由于Fragment以及新的TabLayout的出現(xiàn),博主在此斷言,Tablelayout也命不久矣,被移除支持只是遲早的事兒。

所以,Android的五大基本布局現(xiàn)在只剩下三個(這里說的是基本布局,在Android support包里引入的新的布局不計入內(nèi)),下面分別介紹一下這三個基本布局。

一、FrameLayout
FrameLayout應(yīng)該是Android系統(tǒng)中最簡單的布局了,在FrameLayout中的元素,默認都是以FrameLayout控件的坐上頂點作為基準(zhǔn)點,一層一層的重疊起來,后加進來的元素覆蓋前面的元素。

下面先來一個演示,代碼如下:

<FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
 
  <View
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:background="#ff0000"/>
 
  <View
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:background="#000000"/>
 
  <View
    android:layout_width="200dp"
    android:layout_height="200dp"
    android:layout_margin="100dp"
    android:background="#00ff00"/>
 
</FrameLayout>

運行結(jié)果如下:

在代碼里,有三個View,而在運行結(jié)果上只能看到兩個View,一個黑色和一個綠色。這是因為紅色的View被黑色的View蓋住了。

在FrameLayout中,通過android:layout_gravity屬性去指定子元素的位置,下面調(diào)整一下上訴例子中的黑色View的位置,讓紅色的View顯示出來,調(diào)整后的代碼如下:

<View
  android:layout_width="200dp"
  android:layout_height="200dp"
  android:layout_gravity="bottom|right"
  android:background="#000000"/>
 

可以看到上面代碼里添加了android:layout_gravity屬性,并且指定了兩個值,一個為bottom,一個為right,表示這個View將被放到FrameLayout的右下角。運行結(jié)果如下圖所示:

二、LinearLayout
LinearLayout是線性布局,它可以讓它內(nèi)部的元素按照指定方向依次排開。LinearLayout的方向是通過android:orientation屬性指定,并且可以通過android:gravity屬性指定對其方式。

還是直接上段代碼看看效果,代碼如下:

<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:orientation="vertical"
  android:gravity="center">
 
  <View
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#ff0000"/>
 
  <View
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#000000"/>
 
  <View
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#00ff00"/>
</LinearLayout>

在代碼中,設(shè)置了LinearLayout的方向為縱向,并且對其方式居中對齊,于是運行結(jié)果如下圖所示:

除了android:orientation將設(shè)為vertical外,也可以設(shè)為horizontal。讓LinearLayout內(nèi)部的元素橫向排列,將上面例子中的android:orientation屬性值改為horizontal后的運行結(jié)果,如下圖所示:

三、RelativeLayout
RelativeLayout是基本布局里面最靈活,也是最復(fù)雜的布局,它內(nèi)部的元素可以通過設(shè)定彼此之間的相對關(guān)系來決定布局,使用RelativeLayout時,推薦為其內(nèi)部每個元素都設(shè)定id,下面依然通過一個列子來演示此布局的使用方法。代碼如下:

<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent"
  android:layout_height="match_parent">
 
  <View android:id="@+id/red"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:background="#ff0000"/>
 
  <View android:id="@+id/black"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_toRightOf="@id/red"
    android:layout_below="@id/red"
    android:background="#000000"/>
 
  <View android:id="@+id/green"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_below="@id/black"
    android:layout_alignParentRight="true"
    android:background="#00ff00"/>
 
  <View android:id="@+id/gray"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_centerInParent="true"
    android:background="#888888"/>
 
  <View android:id="@+id/orange"
    android:layout_width="100dp"
    android:layout_height="100dp"
    android:layout_toRightOf="@id/green"
    android:layout_below="@id/gray"
    android:background="#ff8800"/>
</RelativeLayout>

先分析代碼,可以看到每一個View都被設(shè)置了一個id值,分別為red,black,green,gray和orange。然后通過代碼,可以看出black位于red的右邊和下面,green位于black的下面并且右對齊其父元素(即RelativeLayout),gray居中對齊父元素(即RelativeLayout), orange位于green的右邊同時位于gray的下面,運行結(jié)果如圖所示:

在此在歸納一下RelativeLayout中,與布局相關(guān)的屬性

android:layout_below:位于指定元素的下方
android:layout_above:位于指定元素的上方
android:layout_toLeftOf:位于指定元素的左側(cè)
android:layout_toRightOf:位于指定元素的右側(cè)
android:layout_centerVertical:垂直居中對齊父元素
android:layout_centerHorizontal:水平居中對齊父元素
android:layout_centerInParent:居中對齊父元素
android:layout_alignParentRight:與父元素右對齊
android:layout_alignParentLeft:與父元素左對齊
android:layout_alignParentTop:與父元素上對齊
android:layout_alignParentBottom:與父元素下對齊
android:layout_alignRight:與指定元素右對齊
android:layout_alignLeft:與指定元素左對齊
android:layout_alignTop:與指定元素上對齊
android:layout_alignBottom:與指定元素下對齊
從Android 4.2開始,也就是從API Level 17開始,Android增強了RelativeLayout,使其能夠更好的應(yīng)對并本地化這一需求,比如在有的國家,文字是從右往左閱讀,這也就是所說的RTL。為了應(yīng)對RTL,RelativeLayout又增加了以下屬性:

android:layout_alignStart:與指定元素的開始位置對齊
android:layout_toStartOf:位于指定元素的開始側(cè)
android:layout_alignParentStart:與父元素與開始側(cè)對齊
android:layout_alignEnd:與指定元素的結(jié)束始位置對齊
android:layout_toEndOf:位于指定元素的結(jié)束側(cè)
android:layout_alignParentEnd:與指定元素的結(jié)束位置對齊
這里的開始和結(jié)束我們可以做如下理解:

開始:在從左到右閱讀習(xí)慣的國家,開始側(cè)等于左側(cè),toStartOf的顯示效果就等于toLeftOf。但是在從右往左閱讀習(xí)慣的國家,那么開始側(cè)就變成了右側(cè),toStartOf的顯示效果就等于了toRightOf。
結(jié)束:同上面對開始的理解一樣,結(jié)束側(cè)在從左到右閱讀習(xí)慣的國家就是右側(cè),反之則在左側(cè)。

原文鏈接:http://lyjbk.com/archives/158.html

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android BottomSheetDialog實現(xiàn)底部對話框的示例

    Android BottomSheetDialog實現(xiàn)底部對話框的示例

    這篇文章主要介紹了Android BottomSheetDialog實現(xiàn)底部對話框的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 在Android環(huán)境下WebView中攔截所有請求并替換URL示例詳解

    在Android環(huán)境下WebView中攔截所有請求并替換URL示例詳解

    這篇文章主要介紹了在Android環(huán)境下WebView中攔截所有請求并替換URL示例詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • Android實現(xiàn)電池管理系統(tǒng)

    Android實現(xiàn)電池管理系統(tǒng)

    這篇文章主要為大家詳細介紹了Android實現(xiàn)電池管理系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Android模仿實現(xiàn)微博詳情頁滑動固定頂部欄的效果實例

    Android模仿實現(xiàn)微博詳情頁滑動固定頂部欄的效果實例

    這篇文章主要給大家介紹了關(guān)于利用Android模仿實現(xiàn)微博詳情頁滑動固定頂部欄效果的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • Android中使用ListView實現(xiàn)漂亮的表格效果

    Android中使用ListView實現(xiàn)漂亮的表格效果

    這篇文章主要介紹了Android中使用ListView實現(xiàn)漂亮的表格效果,本文用詳細的代碼實例創(chuàng)建了一個股票行情表格,需要的朋友可以參考下
    2014-10-10
  • Android實現(xiàn)加載時提示“正在加載,請稍后”的方法

    Android實現(xiàn)加載時提示“正在加載,請稍后”的方法

    在現(xiàn)在的很多應(yīng)用中,當(dāng)在加載的時候,如果頁面動態(tài)數(shù)據(jù)較多,會有很長一段時間的空白頁面,如果加上這個頁面正在加載的提示,使得應(yīng)用更加人性化。這篇文章就給大家分享了在 Android實現(xiàn)加載時提示“正在加載,請稍后”的方法,有需要的朋友們可以參考借鑒。
    2016-10-10
  • Android 解析JSON對象及實例說明

    Android 解析JSON對象及實例說明

    本篇文章小編為大家介紹,Android 解析JSON對象及實例說明。需要的朋友參考下
    2013-04-04
  • Android 自定義組件成JAR包的實現(xiàn)方法

    Android 自定義組件成JAR包的實現(xiàn)方法

    這篇文章主要介紹了Android 自定義組件成JAR包的實現(xiàn)方法的相關(guān)資料,偶爾會用到這樣的功能,如果你自己自定義的組件很好,需要的朋友可以參考下
    2016-11-11
  • Android Flutter實現(xiàn)彈幕效果

    Android Flutter實現(xiàn)彈幕效果

    這篇文章主要為大家詳細介紹如何利用Android FLutter實現(xiàn)彈幕效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06
  • Java ArrayList源碼深入分析

    Java ArrayList源碼深入分析

    ArrayList 類是一個可以動態(tài)修改的數(shù)組,與普通數(shù)組的區(qū)別就是它是沒有固定大小的限制,我們可以添加或刪除元素。ArrayList 繼承了 AbstractList,并實現(xiàn)了List接口
    2022-08-08

最新評論

庐江县| 松桃| 胶南市| 根河市| 汽车| 都兰县| 闸北区| 中西区| 青冈县| 尼木县| 晋城| 永泰县| 道孚县| 淅川县| 琼中| 内黄县| 内乡县| 米林县| 格尔木市| 南江县| 宜宾县| 阜康市| 墨玉县| 镇雄县| 西城区| 肇州县| 阿瓦提县| 济阳县| 灵川县| 海门市| 景泰县| 长宁区| 鲜城| 都江堰市| 泌阳县| 泽库县| 和平县| 朝阳县| 云梦县| 盐津县| 深水埗区|