移動開發筆記(四)UI

1.常見控件

屬性
		match_parent		當前控件大小和父佈局的大小一樣
		wrap_content		控件的大小能剛好包含裏面的內容
		dp是一種屏幕密度無關的尺寸單位
		文字大小要使用sp作爲單位,用戶修改完文字尺寸後,文字大小也會跟着變化 

1.1TextView
android:gravity來指定文字對齊方式,可選值有top,bottom,start,end,center
1.2Button
Android會默認將按鈕上的英文字母轉換爲大寫,可以添加啊
aandroid:textAllCaps="false"這個屬性,保留原始文字內容
除了API方式來註冊監聽器,也可以使用實現接口的方式來進行註冊:

class MainActivity : AppCompatActivity(),View.OnClickListener {
			override fun onClick( v : View?){
				when(v?.id){
				R.id.button ->{
					//此處添加邏輯
					}
				}
			}

			}

1.3EditText
android:hint=“要隱藏提示的內容” 指定了一段提示性的文本
android:maxLine=“2” 指定EditText的最大行數爲兩行,EditTest不會繼續拉伸

1.4ImageView
android:src屬性給ImageView指定了一張圖片
也可以通過代碼動態地更改ImageView中的圖片:

	class MainActivity : AppCompatActivity(),View.OnClinckListener{
	...
	override fun OnClick( v : View?){
	when(v?.id){
		R.id.button ->{
			imageView.setImageResource(R.drawable.img_2)
					}
		}

	}

}

1.5ProgressBar
android:visibility 可選參數有 visible , invisible 和 gone三個屬性
visible表示空間可見的
invisible表示控件不可見,但他仍然佔據着原來的位置和大小。
可以通過代碼實現動態修改,通過setVisibility()方法,允許傳入View.VISIBLE,VIEW.INVISIBLE,VIEW.GONE這三個值
也可以通過getVisibility()方法來判斷ProgressBar是否可見
可以給ProgressBar指定不同樣式:

style="?android:attr/progressBarStyleHorizontal"
			android:max="100"
		指定成水平進度條後,我們可以通過android:max屬性給進度條設置一個最大值,然後在代碼中動態地改變進度條的進度
progressBar.progressBar.progress+10

1.6AlertDialog

	class MainActivity : AppCompatActivity(),View.OnClinckListener{
	...
	override fun OnClick( v : View?){
	when(v?.id){
		R.id.button ->{
			AlertDialog.Builder(this).apply{
			setTitle("This is Dialog")
			setMessage("Something important.")
			setCancelable(false)
			setPositivebutton("OK"){
			dialog,which ->
			}
			setNegativeButton("Cancel"){
			dialog , which ->			
			}
			show()
			}
					}
		}

	}

}

2.基本佈局

屬性
	android:layout_gravity屬性,可以指定控件中的對齊方式
	android:layout_weigh 屬性,可以劃分屏幕

2.1LinearLayout 線性佈局
可以通過android:orientation屬性來只當排列方式是vertical還是horizontal.
2.2RelativeLayout 相對佈局
相對父佈局進行定位
android:layout_alignParentLeft
android:layout_alignParentRight
android:layout_alignParentTop
android:layout_alignParentBottom
android:layout_centerInParent
相對其他控件進行定位
android:layout_toLeftOf
android:layout_toRightOf
android:layout_below
android:layout_above
相對其他控件對齊
android:layout_alignLeft
android:layout_alignRight
android:layout_alignTop
android:layout_alignBottom
2.3FrameLayout 幀佈局

3.自定義控件

  1. 在layout目錄下創建一個title.xml佈局
    在MainActivity中將系統自帶的標題欄隱藏掉
supportActionBar?.hide()

在佈局中加入

<include layout="@layout/title" />

2.新建TitleLayout繼承自LinearLayout讓他成爲一個自定義標題欄控件

class TitleLayout(context : Context , attrs : AttributeSet) : LinearLayout(context , attrs){
	init{
		LayoutInflater.from(context).inflate(R.layout.title,this)
		titleBack.setOnClickListener{
		val activity = context as Activity
		activity.finsh()
	}
	}
}

在佈局文件中加入

<com.example.uicustomviews.TitleLayout
	android:layout_height="wrao_content"
	android:layout_width="matcg_parent"
/>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章