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 | 設定元件占據行數 |