日本好好热aⅴ|国产99视频精品免费观看|日本成人aV在线|久热香蕉国产在线

  • <cite id="ikgdy"><table id="ikgdy"></table></cite>
    1. 西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
      軟件
      軟件
      文章
      搜索

      首頁硬件相關(guān)手機技術(shù) → Android 用戶界面設(shè)計:線性​​布局

      Android 用戶界面設(shè)計:線性​​布局

      相關(guān)軟件相關(guān)文章發(fā)表評論 來源:西西整理時間:2011/5/7 8:33:04字體大。A-A+

      作者:RockUX–WEB前端點擊:238次評論:0次標(biāo)簽: Android

      • 類型:源碼相關(guān)大。23.6M語言:中文 評分:9.1
      • 標(biāo)簽:
      立即下載

      理解布局對于良好的Android程序設(shè)計來說很重要。在這個教程中,你將學(xué)習(xí)到所有關(guān)于線性布局的東西,它在屏幕上垂直地或水平地組織用戶界面控件或者小工具。使用得當(dāng),線性布局可以作為基本的布局,基于這個布局來可以設(shè)計出許多有趣的Android程序用戶界面。

      什么是線性布局

      線性布局是最簡單,Android開發(fā)者使用得最多的布局類型之一,開發(fā)者用它來組織你們的用戶界面上的控件。線性布局的作用就像它的名字一樣:它將控件組織在一個垂直或水平的形式。當(dāng)布局方向設(shè)置為垂直時,它里面的所有子控件被組織在同一列中;當(dāng)布局方向設(shè)置為水平時,所有子控件被組織在一行中。

      線性布局可以在XML布局資源文件中定義,也可以用Java代碼在程序中動態(tài)的定義。

      下圖展示了一個包含7個TextView控件的線性布局。這個線性布局方向被設(shè)置為垂直,導(dǎo)致每個TextView控件被顯示在一列當(dāng)中。每一個TextView控件的文本屬性都是一個顏色值,背景色就是這個顏色;通過將控件的layout_width屬性設(shè)置為fill_parent,每個控件都拉伸到屏幕寬度。

      用XML布局資源定義線性布局

      設(shè)計程序用戶界面最方便和可維護的方法是創(chuàng)建XML布局資源。這個方法極大地簡化了UI設(shè)計過程,它將很多靜態(tài)創(chuàng)建和用戶界面控件的布局以及控件屬性的定義移到了XML中,而不是寫代碼。

      XML布局資源必須被存儲在項目目錄的/res/layout下。讓我們看看前一節(jié)介紹的彩虹線性布局。這個屏幕基本上就是一個設(shè)置為鋪滿整個屏幕的垂直線性布局,這通過設(shè)置它的layout_width和layout_height屬性為fill_parent來實現(xiàn)。適當(dāng)?shù)貙⑵涿麨?res/layout/rainbow.xml,XML定義如下:

      <?xml version="1.0" encoding="utf-8"?>
      <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="fill_parent" android:layout_height="fill_parent"
      android:orientation="vertical">
      <TextView android:text="RED" android:id="@+id/TextView01"
      android:layout_height="wrap_content" android:background="#f00"
      android:layout_width="fill_parent" android:layout_weight=".14"
      android:gravity="center" android:textColor="#000"></TextView>
      <TextView android:text="ORANGE" android:id="@+id/TextView02"
      android:layout_height="wrap_content" android:layout_width="fill_parent"
      android:layout_weight=".15" android:background="#ffa500"
      android:gravity="center" android:textColor="#000"></TextView>
      <TextView android:text="YELLOW" android:id="@+id/TextView03"
      android:layout_height="wrap_content" android:layout_width="fill_parent"
      android:layout_weight=".14" android:background="#ffff00"
      android:gravity="center" android:textColor="#000"></TextView>
      <TextView android:text="GREEN" android:id="@+id/TextView04"
      android:layout_height="wrap_content" android:layout_width="fill_parent"
      android:layout_weight=".15" android:background="#0f0" android:gravity="center"
      android:textColor="#000"></TextView>
      <TextView android:text="BLUE" android:id="@+id/TextView05"
      android:layout_height="wrap_content" android:layout_width="fill_parent"
      android:layout_weight=".14" android:background="#00f" android:gravity="center"
      android:textColor="#fff"></TextView>
      <TextView android:text="INDIGO" android:id="@+id/TextView06"
      android:layout_height="wrap_content" android:layout_width="fill_parent"
      android:layout_weight=".14" android:background="#4b0082"
      android:gravity="center" android:textColor="#fff"></TextView>
      <TextView android:text="VIOLET" android:id="@+id/TextView07"
      android:layout_height="wrap_content" android:layout_width="fill_parent"
      android:layout_weight=".14" android:background="#ee82ee"
      android:gravity="center" android:textColor="#000"></TextView>
      </LinearLayout>

      可能你會注意到這個線性布局的每一個子控件都有很多有趣的屬性,包括一個叫做layout_weight的屬性。一會我們會講到更多關(guān)于它的內(nèi)容。

      下面兩張圖片展示了這個布局在設(shè)備的豎屏和橫屏模式下的樣子:

      回憶一下,在Activity中,只需要一行有onCreate()方法的代碼來在屏幕上加載和顯示一個布局資源。如果這個布局資源被存儲在/res/layout/rainbow.xml文件中,這行代碼應(yīng)該是:

      setContentView(R.layout.rainbow);

      用程序動態(tài)定義線性布局

      你也可以通過程序來創(chuàng)建和配置線性布局。這通過LinearLayout(android.widget.LinearLayout)類來實現(xiàn)。你能在LinearLayout.LayoutParams類中找到子級細(xì)節(jié)。同樣地,典型的布局參數(shù)(android.view.ViewGroup.LayoutParams),如layout_height和layout_width, 以及邊距參數(shù)(ViewGroup.MarginLayoutParams)也能用在LinearLayout對象上。

      使用以前介紹過的setContentView()方法代替直接加載布局資源,你需要用Java創(chuàng)建屏幕內(nèi)容,然后向setContentView()方法提供一個父級布局對象,這個對象包括了所有要作為它的子視圖展示的控件內(nèi)容。在這種情況下,你的父級布局對象是線性布局。

      例如,下面的代碼示例了如何用程序在Activity中實例化一個線性布局并在它的onCreate()方法中將三個TextView對象放入其中:

      public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      // setContentView(R.layout.rainbow);
      TextView tv1 = new TextView(this);
      tv1.setText("FIRST");
      tv1.setTextSize(100);
      tv1.setGravity(Gravity.CENTER);
      TextView tv2 = new TextView(this);
      tv2.setTextSize(100);
      tv2.setGravity(Gravity.CENTER);
      tv2.setText("MIDDLE");
      TextView tv3 = new TextView(this);
      tv3.setTextSize(100);
      tv3.setGravity(Gravity.CENTER);
      tv3.setText("LAST");
      LinearLayout ll = new LinearLayout(this);
      ll.setOrientation(LinearLayout.VERTICAL);
      ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
      ll.setGravity(Gravity.CENTER);
      ll.addView(tv1);
      ll.addView(tv2);
      ll.addView(tv3);
      setContentView(ll);
      }

      下面兩張圖片展示了這個布局在設(shè)備豎屏和橫屏下的樣子:

      讓我們更近一步地研究一下上面的Java代碼。首先,創(chuàng)建并配置三個TextView控件。每個控件都有文本大。ㄗ煮w大小),文本對齊,以及文本值本身。然后,創(chuàng)建一個垂直方向的線性布局。它的布局參數(shù)允許它填充整個父級對象(在這里就是整個屏幕),并且它的對齊導(dǎo)致所有子控件都排列在屏幕中間,而不是從左上角開始。每個TextView控件通過addView方法作為子控件添加到線性布局中。最后,當(dāng)父級控件要在屏幕上顯示時,線性布局被傳到setContentView()方法中。

      如你所見,當(dāng)越來越多的控件要添加到屏幕時,代碼量會很快地增長。為了易組織和可維護性,用程序定義并使用布局最好是用在特殊情況而不是一般情況。

      探討線性布局的重要特性和屬性

      現(xiàn)在讓我們來看看有助于配置線性布局和它的子控件的一些重要屬性。

      一些特別的屬性應(yīng)用到線性布局。你會使用到線性布局最重要的屬性包括:

      方向?qū)傩裕ū仨殻,取值可以是vertical或horizontal(類:LinearLayout)

      對齊屬性(可選),控制子控件在線性布局中如何排列和顯示(類:LinearLayout)

      layout_weight屬性(可選,應(yīng)用到每個子控件)指定每個子控件在父級線性布局中的相對重要性(類:LinearLayout.LayoutParams)

      此外,通用的ViewGroup-style屬性也應(yīng)用到線性布局。這些屬性包括:

      通用布局參數(shù)如layout_height (必須)和layout_width (必須) (類:ViewGroup.LayoutParams)

      邊距布局參數(shù)如margin_top,margin_left,margin_right和margin_bottom (類:ViewGroup. MarginLayoutParams)

      布局參數(shù)如layout_height和layout_width (類:ViewGroup.LayoutParams)

      給子控件賦權(quán)

      絕大部分線性布局的屬性都是自明性的。然而layout_weight屬性需要一些額外的討論。與其它線性布局屬性不同,其它屬性應(yīng)用在線性布局視圖本身,而這個屬性是應(yīng)用在它的子控件上的。權(quán)值本身應(yīng)該是一個數(shù)字(比如0.5,0.25,0.10,0.10,0.05),如果你把所有子控件的權(quán)值加起來等于1(100%)。

      子控件的權(quán)值控件它在父線性布局中有多“重要”或者留給其多少“空間”。這一點最好通過例子來說明。讓我們回到我們前面用的彩虹線性布局。為了允許所有子控件相同地“拉伸”填充線性布局,不管屏幕的大小,我們使用layout_weight來對每個TextView賦予相對權(quán)值。因為有7種我們想賦相同權(quán)值的顏色,我們將1除以7大約得到0.143.然而,既然我們想要權(quán)值之和最后為1,因此5個控件權(quán)值設(shè)為0.14,另外兩個為0.15——一個微小的區(qū)別使得總和剛剛好為1,但是這對于第一個和最后一個控件來說還是很明顯的。

      當(dāng)屏幕上有足夠空間來正確的展示所有控件的時候,這個權(quán)值技巧很有效。那就是說,當(dāng)空間很緊的時候,權(quán)值屬性可能會被其它因素覆蓋,比如視圖裁剪或者在TextView下試圖不環(huán)繞文本。當(dāng)我們改變rainbow.xml布局文件以包含相似水平布局(layout_height 還是設(shè)置為 fill_parent)的時候,這變得很明顯。

      下面的兩張圖片展示這個相同的布局(只是改變到水平方向)在設(shè)備豎屏和橫屏模式下可能的樣子:

      我們期望的是紅色和紫色區(qū)域(權(quán)值0.15)比其它顏色(權(quán)值為0.14)會略大一些,但是顯示出來卻不是這樣。如果你仔細(xì)看紅色TextView,它應(yīng)該比它邊上橙色的TextView占用更多空間。然而,因為“Red”是一個短單詞,而“Orange”不是,因此系統(tǒng)自動的作了一些沖撞調(diào)整,為了使得每個單詞不會折行。這樣的結(jié)果更令人高興,但是這可能會有一些煩惱,如果這不是想要的效果的話。

      總結(jié)

      Android程序用戶界面使用布局來定義,而線性布局是最基本的布局類型之一。線性布局允許子控件被組織在一行或一行(水平)或一列(豎直)上。子控件的位置可以使用對齊和權(quán)值屬性進(jìn)一步設(shè)置。[English]

       作者:RockUX–WEB前端
      出自:Android用戶界面設(shè)計:線性布局

        相關(guān)評論

        閱讀本文后您有什么感想? 已有人給出評價!

        • 8 喜歡喜歡
        • 3 頂
        • 1 難過難過
        • 5 囧
        • 3 圍觀圍觀
        • 2 無聊無聊

        熱門評論

        最新評論

        發(fā)表評論 查看所有評論(0)

        昵稱:
        表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
        字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)