2018-2019-2 20189205《移動平臺應用開發實踐》第七週做業

Android學習

佈局

Android界面六大基本佈局分別是:android

  • 線性佈局LinearLayout
  • 表格佈局TableLayout
  • 相對佈局RelativeLayout
  • 層佈局FrameLayout
  • 絕對佈局AbsoluteLayout
  • 網格佈局GridLayout。
    其中,表格佈局是線性佈局的子類。網格佈局是android 4.0後新增的佈局。在手機程序設計中,絕對佈局基本上不用,用得相對較多的是線性佈局和相對佈局。

線性佈局

線性佈局中,將佈局中的組件線性排列,有兩種排法:ide

  • 從左到右:android:orientation=」horizontal」
  • 從上到下:android:orientation=」vertical」

經常使用的屬性有:佈局

  • android:id - 爲控件指定相應的ID
  • android:text - 指定控件當中顯示的文字,須要注意的是,這裏儘可能使用string.xml
  • android:gravity - 指定控件的基本位置,好比說居中,居右等位置
  • android:textSize - 指定控件當中字體的大小
  • android:background - 指定控件所用的背景色,RGB命名法
  • android:layout_width - 指定控件的寬度
  • android:layout_height - 指定控件的高度
  • android:layout_weight - 指定控件的佔用比例
  • android:padding - 指定控件的內邊距,也就是說控件當中的內容
  • android:sigleLine - 若是設置爲真的話,則將控件的內容顯示在一行當中

相對佈局

相對佈局中,組件的位置參考其餘控件進行佈局,默認爲父控件。
相對佈局有三種類型的屬性:學習

屬性值是true或false 字體

  • android:layout_centerHrizontal 水平居中
  • android:layout_centerVertical 垂直居中
  • android:layout_centerInparent 相對於父元素徹底居中。
  • android:layout_alignParentBottom 位於父元素的下邊緣
  • android:layout_alignParentTop 位於父元素的上邊緣
  • android:layout_alignParentLeft 位於父元素的左邊緣
  • android:layout_alignParentRight 位於父元素的右邊緣

**屬性值是」@id/*「**this

  • android:layout_below 在某元素的下方
  • android:layout_above 在某元素的上方
  • andorid:layout_toRightOf 在某元素的右方
  • android:layout_toLeftOf 在某元素的左方
  • android:layout_alignBottom 和某元素下方對齊
  • android:layout_alignTop 和某元素上方對齊
  • android:layout_alignRight 和某元素右方對齊
  • android:layout_alignLeft 和某元素左方對齊

屬性值是數值設計

  • android:layout_marginLeft 離某元素左邊緣的距離
  • android:layout_marginRight 離某元素右邊緣的距離
  • android:layout_marginTop 離某元素上邊緣的距離
  • android:layout_marginBottom 離某元素下邊緣的距離

層佈局

層佈局的特色是從左上角開始,後面的會覆蓋前面的控件。
在普通功能的軟件設計中層佈局用得也很少,其主要應用就是地圖方面。code

表格佈局

表格佈局,適用於多行多列的佈局格式,每一個TableLayout是由多個TableRow組成,一個TableRow就表示TableLayout中的每一行,這一行能夠由多個子元素組成。實際上TableLayout和TableRow都是LineLayout線性佈局的子類。可是TableRow的參數android:orientation屬性值固定爲horizontal,且android:layout_width=MATCH_PARENT,android:layout_height=WRAP_CONTENT。因此TableRow實際是一個橫向的線性佈局,且因此子元素寬度和高度一致。
在TableLayout中,單元格能夠爲空,可是不能跨列,意思是隻能不能有相鄰的單元格爲空。xml

經常使用屬性:繼承

  • android:shrinkColumns:設置可收縮的列,內容過多就收縮顯示到第二行
  • android:stretchColumns:設置可伸展的列,將空白區域填充滿整個列
  • android:collapseColumns:設置要隱藏的列

網格佈局

GridLayout網格佈局是Android4.0以後新加入的佈局方式,與表格佈局大同小異,不過也新增了一些內容:

  • 1.能夠設置容器中組件的對其方式。
  • 2.容器中的組件能夠跨多行也能夠跨多列

監聽器

監聽器是一個存在於View類下的接口,通常以On******Llistener命名,實現該接口須要複寫相應的on****(View v)方法。

實現

方法一:
在Activity中定義一個內部類繼承監聽器接口(這裏是OnClickListener)。常見的繼承方法以下:

class MyListener implements View.OnClickListener{
        @Override
        public void onClick(View v) {
            Toast.makeText(MainActivity.this,"you have clicked Button2",Toast.LENGTH_SHORT).show();
        }
    }

方法二:
實現匿名內部類。這種方法適合只但願對監聽器進行一次性使用的狀況,在該代碼塊運行完畢以後,該監聽器也就不復存在了。

bt1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this,"you have clicked Button1",Toast.LENGTH_SHORT).show();
            }
        });

方法三:
利用佈局文件中的onClick屬性,並在實現文件中實現該方法。注意的是這裏的方法名應該和佈局文件中onClick屬性的方法名相同,該方法必須是public方法。

public void onButtonClick (View view){
        Toast.makeText(MainActivity.this,"you have clicked Button3",Toast.LENGTH_SHORT).show();
    }
}

在佈局文件中的設置

<Button
        android:layout_below="@id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/button3"
        android:text="Button3"
        android:onClick="onButtonClick"/>
相關文章
相關標籤/搜索