天天看點

Android學習筆記(一)布局類

View是使用者界面元件的共同父類,幾乎所有的使用者界面元件都是繼承View類而實作的。

對View類及其子類可以進行屬性設定,可以在布局檔案XML中設定,也可以在Java代碼檔案中動态設定。

屬性 對應常用方法 說明
android:background setBackgroundColor(int color) 設定背景顔色
android:id setId(int) 添加動态圖檔需要
findViewById() 為元件設定可通過sindViewById方法擷取的辨別符
android:alpha setAlpha(float) 設定透明度,取值[0 ,1]之間
android:visibility setVisibility(int) 設定元件的可見性
android:clickable setClickable(boolran) 設定元件是否響應單機事件

文本标簽

  • 文本标簽TextView用于顯示文本内容,是最常用的元件之一。
方法打 功能
getText(); 擷取文本标簽的文本内容
setText(CharSequencetext); 設定文本标簽的文本内容
setTextSize(float); 設定文本标簽的文本大小
setTextColor(intcolor); 設定文本标簽的文本顔色
  • 文本标簽TextView常用的XML檔案元素
元素屬性 說明
android:id 文本标簽辨別
android:layout_width 文本标簽TextView的寬度,通常取值"match_parent"(布滿視窗)或以裝置獨立像素dp為機關的固定值
android:layout_height 文本标簽TextView的高度,通常取值"wrap_content"(文本的高)或以裝置獨立像素dp為機關的固定值
android:text 文本标簽TextView的文本内容
adnroid:textSize 文本标簽TextView的文本大小

擴充

XML檔案中通過使用"@"字首來引入對一個資源的引用
引入格式:@[package:]type/name
package表示資源所在包名,但如果引用的是我們自己包中的資源,就不需要指定包名,package可以省略不寫。type是XML子節點名,name是XML屬性名。
EX1:
android:text="@string/hello"
表示引入一個string類型的資源,
屬性名叫hello
屬性值可以在res目錄下對應XML檔案中建立或修改
EX2:
android:id="@+id/textView1"
表示新增一個id資源,命名為textView1
           

頁面布局檔案:activity_main.xml

設計控制檔案MainActivity.java

可以在控制檔案MainActivity.java源檔案中與布局檔案(activity_main.xml)中文本标簽建立關聯。然後對該文本标簽元件進行操作

public class MainActivity extends Activity
{
	private TextView txt;----------->聲明文本标簽對象
	public void onCreate(Bundle saveInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		txt = (TextView)findViewById(R.id.textView1);--------->與布局檔案文本标簽建立關聯
		txt.setTextColor(Color.WHITE);--------->設定文本顔色
	}
}
           

擷取布局檔案中的空間對象

private TextView txt;---------->建立一個TextView對象
txt = (TextView)findViewById(R.id.textView1);
		||				||			||
	将擷取到的View	根據id擷取對應	布局檔案中名為textView1的id
	對象強制轉換為		View對象
	TextView類型		
	然後便可對蓋控件對象進行各種操作
           

關于R.xx.xxx的解釋

setContentView(R.layou.t activity_main )

findViewByld(R.idtextView1 )

R是類名,對應類檔案是R.java,	R.java是編譯器自動生成,會自動收錄目前應用中所有的資源,并根據這些資源建立對應的索引(可以了解為變量名和變量值----對應的資源索引庫。)
layout即R類中的内部類,activity_main則是該類中的靜态變量。
id即R類中的内部類
textView1則是該類中的靜态變量
           

Android布局管理

Android系統的布局管理指的是在XML布局檔案中設定元件的大小、間距、排列及對齊方式等。

Android系統中常見的布局方式有:

LinearLayout、FrameLayout、TableLayout、RelativeLayout、AbsoluteLayout、GridLayout、ConstraintLayout

1.布局檔案的規範

Android系統應用程式的XML布局檔案有如下規範:
(1).布局檔案作為應用項目的資源存放在res/layout目錄下,其擴充名為.xml;
(2).布局檔案的根節點通常是一個布局方式,在根節點内可以添加元件作為節點;
(3).布局檔案的根節點必須包含一個命名空間:
		xmlns:android="http://schemas.android.com/apk/res/android"
(4).如果要在實作控制功能的Java程式中控制界面中的元件,則必須為界面檔案中的元件定義一個ID,其定義格式為:
		android:id="@+id/<元件ID>"
           

布局檔案的重要屬性值

(1).設定元件大小的屬性值
~	wrap_content:	根據元件内容的大小來決定元件的大小;
~	match_parent:	使元件填充所在容器的所有空間。
(2)設定元件大小的機關
~	px(pixels)像素:即螢幕上的發光點;
~dp(或dip	device 	independent	pixles)裝置獨立像素:一種支援多分辨率裝置的抽象機關,和硬體相關;
~sp(scaled pixels)比例像素:設定字型大小;
(3).設定元件的對齊方式
	在布局檔案中,由 “android:gravity” 屬性控制元件的對齊方式,其屬性值有上(top)、下(bottom)、左(letf)、右(right)、水準方向居中(center_horizontal)、垂直方向居中(center_vertical)等。
           

LinearLayout(線性布局)

屬性值:
android:orientation="horizontal"(水準方向)
android:orientation="vertical"(垂直方向)
android:gravity="top"-------->控制元件對齊方式;上top,下bottom;左left;右right;水準方向居中(center_horizontal); 垂直方向居中(center_vertical)
           

核心代碼

<LinearLayout android:orientation="vertical/horizontal">
//垂直或者水準排列
layout_margin//----->該元件距離四邊的距離
layout_marginBottom//----->該元件底部下方應空出的距離
layout_marginEnd//----->在該元件的結束位置後空出的距離
layout_marginLeft/Right//------->該元件左邊/右邊應空出的距離
layout_marginStart//------->從該元件的起始位置空出的距離
layout_marginTop//------->該元件頂部上方應空出的距離


           

若希望布局中的控件或(子布局)的大小能按照一定比例分布,可使用設定權重

1.在布局中添加屬性:
		android:weightSum="5"	設定該布局總權重值,如果weightSum不設定,預設為子控件權重之和。
2.為布局中的 各個控件(或子布局)添加屬性:
		android:layout_weight="1.0"來設定該控件或子布局子在父容器中的權重值
3.将控件預設寬或高(根據布局方向)值設為0以免影響通過權重設定的控件大小。
		android:layout_width="0dp"或
		android:layout_height="0dp"
           

限制布局(ConstraintLayout)

  • 扁平式的布局方式,無任何嵌套,減少布局的層級,優化渲染性能
  • 要在ConstrainLayout中定義View的位置,必須為該View添加至少一個水準和垂直限制(否則該view會在左上角繪制)
  • 限制布局中的控件都有一個Constrains屬性,處理拖拽方式,也可以通過該屬性設定或調整與其他控件之間的限制關系,控件間的間距也可以通過Layout_Margin屬性進行精确設定或調整。

相對布局(RelativeLayout)

  • 通過指定ID關聯其他元件,與之右對齊、上下對齊或螢幕中央等方式來排列元件。

幀布局(FrameLayout)

  • 将元件放置到左上角位置,當添加多個元件時,後面的元件将遮蓋之前的元件。在XML布局檔案中,由根元素FrameLayout來辨別幀布局。
  • 示例
    Android學習筆記(一)布局類

表格布局(TableLayout)

  • 将頁面劃分成行列構成的單元格。
  • 在XML布局檔案中,由根元素TableLayout來辨別表格布局
  • 表格的列數由android:shrinkColumns定義,例如:

    android:shrinkColumns="0,1,2,3"即表格為3列,其列編号為第123列

  • 表格的行為由 定義。元件放置到那一列,由android:layout_column指定列編号

    例:

    Android學習筆記(一)布局類

網格布局(GridLayout)

主要屬性

屬性名 作用
alignmentMode 設定布局管理器的對齊方式
columnCount 設定網格列數量
rowCount 設定網格行數量
layout_columnSpan 設定元件占據列數
layout_rowSpan 設定元件占據行數