設計和代碼切換,通常狀況下,咱們 UI 佈局都是先拖再細調整,也就是先用設計默認拖出一個大概的佈局,而後用代碼來微調html
1. TextView 文本框
TextView 繼承於 Viewjava
1.1 經常使用屬性
屬性 | 說明 |
---|---|
android:id | 爲 TextView 設置一個組件 id,方便在 Java 中經過 findViewById() 方法獲取到該對象 |
android:layout_width | TextView 的寬度,值通常爲 wrap_content 或者 match_parent(fill_parent),前者是控件顯示的內容多大,控件就多大,然後者會填滿該控件所在的父容器 固然也能夠設置成特定的大小,好比 200dp |
android:layout_height | TextView 的寬度,內容同上 |
android:gravity | 設置控件中的內容的對齊方向,能夠是 top / button / left / right / center_vertical / fill_vertical... |
android:text | 設置顯示的文本內容,通常將字符串寫到 string.xml 文件,而後經過 @string/xxx 來引用 |
android:textColor | 設置字體顏色,通常將顏色寫入 colors.xml 文件,而後經過 @color/xxx 引用 |
android:textStyle | 設置字體風格,能夠用豎線(|)疊加,好比 bold|italic 有三個可選值: normal(無效果) bold(加粗) italic(斜體) |
android:textSize | 設置字體大小,單位通常用 sp |
android:background | 設置 TextView 的背景顏色,能夠是圖片 |
跑馬燈效果:android
屬性 | 說明 |
---|---|
android:singleLine | 設置是否單行顯示 |
android:ellipsize | 設置文字超出控件寬度時的顯示方式,值有 end 顯示結尾部分 marquee 跑馬燈滾動顯示 middle 顯示中間部分 none 默認 start 顯示開始部分 |
android:marqueeRepeatLimit | 設置跑馬燈重複次數,值能夠是如下幾種 marquee_forever 重複 具體的數字,好比 2 |
識別連接效果:web
android:autoLink
屬性用於設置 TextView 是否識別連接類型和設置可識別的連接類型app
android:autoLink
的值有如下幾種ide
值 | 說明 |
---|---|
none | 不識別,禁用識別 |
all | 能夠識別所有,也就是下面四種 |
電子郵件 | |
map | 地圖 |
phone | 一串數字,或者以 tel:// 開頭的電話號碼 |
web | 網頁地址,以 http(s):// 開頭的網址 |
設置 TextView 字間距佈局
屬性 android:textScaleX
控制字體水平方向的縮放,默認值 1.0f,類型值是 float字體
如: setScaleX(2.0f);
設置 TextView 行間距this
Android TextView 默認顯示中文時會比較緊湊,爲了讓每行保持的行間距,能夠設置以下屬性spa
屬性 | 說明 |
---|---|
android:lineSpacingExtra | 設置行間距,如"3dp" |
android:lineSpacingMultiplier | 設置行間距的倍數,如 "1.2" |
如:setLineSpacing(1.5)
1.2 經常使用方法
void append(CharSequence text); //增長文字
CharSequence getText(); // 獲取文章文字
int getTextSize();
int length();
2. EditText 輸入框
EditText 繼承於 TextView
2.1 經常使用屬性
屬性 | 說明 |
---|---|
android:hint | 提示文本的內容,好比 "請輸入帳戶名稱" |
android:textColorHint | 提示文本的顏色 |
android:selectAllOnFocus | ="true",得到焦點獲取文本全部內容 |
android:minLines="3" | 設置最小行的行數爲 3 |
android:maxLines="3" | 設置 EditText 最大的行數爲 3 當輸入內容超過 maxline,文字會自動向上滾動 |
android:singleLine="true" | 限制 EditText 只容許單行輸入,並且不會滾動 |
android:inputType
:對輸入文本類型進行限制
文本類型,多爲大寫、小寫和數字符號
android:inputType="none" android:inputType="text" android:inputType="textCapCharacters" android:inputType="textCapWords" android:inputType="textCapSentences" android:inputType="textAutoCorrect" android:inputType="textAutoComplete" android:inputType="textMultiLine" android:inputType="textImeMultiLine" android:inputType="textNoSuggestions" android:inputType="textUri" android:inputType="textEmailAddress" // 郵箱類型 android:inputType="textEmailSubject" android:inputType="textShortMessage" android:inputType="textLongMessage" android:inputType="textPersonName" android:inputType="textPostalAddress" android:inputType="textPassword" // 密碼 android:inputType="textVisiblePassword" android:inputType="textWebEditText" android:inputType="textFilter" android:inputType="textPhonetic"
數值類型
android:inputType="number" android:inputType="numberSigned" android:inputType="numberDecimal" android:inputType="phone" // 撥號鍵盤 android:inputType="datetime" android:inputType="date" // 日期鍵盤 android:inputType="time" // 時間鍵盤
2.2 經常使用方法
TextView 的方法,EditText 都有
.setText("success");
3. ImageView 圖像視圖
3.1 經常使用屬性
ImageView 有 2中屬性,分爲爲: src, backgroud,他們之間的區別是:
- background 一般指的都是 背景, 而 src 指的是 內容
- 當使用 src 填入圖片時, 是按照圖片大小直接填 ,不會進行拉伸。而使用 background 填入圖片,則是會根據 ImageView 給定的寬度來進行 拉伸
設置縮小放大的大小
android:adjustViewBounds | 設置縮放時是否保持原圖長寬比 |
android:maxHeight | 設置 ImageView 的最大高度 |
android:maxWidth | 設置 ImageView 的最大寬度 |
3.2 經常使用方法
@Override public void onClick(View view) { switch (view.getId()) { case R.id.button: imageView.setImageResource(R.drawable.image_2); // 修改圖片 break; default: break; } }
4. Button 按鈕
4.1 經常使用屬性
1. Button 繼承自 TextView ,因此能夠 使用 TextView 的那些屬性
2. 咱們能夠將 Button 的 android:background
屬性設置爲該 drawable 資源便可輕鬆實現按下 按鈕時不一樣的按鈕顏色或背景
下表列出了能夠設置的屬性
屬性 | 說明 |
---|---|
drawable | 引用的 Drawable 位圖,能夠把它放到最前面,就表示組件的正常狀態 |
android:state_focused | 是否得到焦點 |
android:state_window_focused | 是否得到窗口焦點 |
android:state_enabled | 控件是否可用 |
android:state_checkable | 控件能否被勾選,例如,checkbox |
android:state_checked | 控件是否被勾選 |
android:state_selected | 控件是否被選擇,針對有滾輪的狀況 |
android:state_pressed | 控件是否被按下 |
android:state_active | 控件是否處於活動狀態,例如,SlidingTab |
android:state_single | 控件包含多個子控件時,肯定是否只顯示一個子控件 |
android:state_first | 控件包含多個子控件時,肯定第一個子控件是否處於顯示狀態 |
android:state_middle | 控件包含多個子控件時,肯定中間一個子控件是否處於顯示狀態 |
android:state_last | 控件包含多個子控件時,肯定最後一個子控件是否處於顯示狀態 |
在 res/drawable
目錄下新建一個按鈕狀態的資源文件 btn_bg.xml
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/btn_pressed"/> <item android:state_enabled="false" android:drawable="@drawable/btn_disabled"/> <item android:drawable="@drawable/btn_normal"/> </selector>
4.2 監聽方法
1. 一個按鈕的監聽方法
button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //點擊Button會改變edittext的文字爲"點擊了Button" edittext.setText("點擊了Button"); } });
2. 繼承於接口 OnClickListener 的監聽方法
public class MainActivity extends Activity implements OnClickListener { private EditText edittext; private Button button; private Button button2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edittext=(EditText) findViewById(R.id.edit_text); button = (Button) findViewById(R.id.button); button2 = (Button) findViewById(R.id.button2); button.setOnClickListener(this); button2.setOnClickListener(this); } @Override //用switch區分是哪一個id public void onClick(View v) { switch (v.getId()){ case R.id.button: edittext.setText("點擊了Button"); break; case R.id.button2: edittext.setText("點擊了Button2"); break; } } }
5. RadioButton 單選按鈕
5.1 經常使用屬性
RadioButton 單選按鈕就是隻可以選中一個,因此咱們須要把 RadioButton 放到 RadioGroup 按鈕組中,從而實現單選功能
RadioButton
繼承自 Button
,因此擁有 Button
的全部公開屬性和方法
RadioButton
只有兩個狀態,選中與未選中,因此也就只有一個屬性是最重要的,那就是 android:checked
屬性 | 說明 |
---|---|
android:checked | 設置或獲取 RadioButton 的選中狀態 |
若是 RadioButton
未選中,那麼點擊它可讓它選中,但反過來是不能夠的,就是不能從選中狀態到未選中狀態
5.2 監聽方法
RadioGroup 是單選組合框,用於 將 RadioButton 框起來。在多個 RadioButton被 RadioGroup 包含的狀況下,同一時刻只能夠選擇一個 RadioButton,並用 setOnCheckedChangeListener 來對 RadioGroup 進行監聽。
//調用setOnCheckedChangeListener來對RadioGroup進行監聽的代碼 radiogroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { if(checkedId == radiobutton1.getId()){ textView.setText("北京"); }else if(checkedId == radiobutton2.getId()){ textView.setText("上海"); } } });
6. RadioGroup 單選按鈕組
6.1 經常使用屬性
要實現 RadioButton
的 單選功能,須要把全部的 RadioButton
放到 RadioGroup
裏面
用於將幾個 RadioButton
組在一塊兒造成單選按鈕組,實現單選功能,也就是選中一個,會取消其它選項的選中
RadioGroup
只提供了一個 XML 屬性 android:checkedButton
用於指定初始化時選中的 ID
屬性 | 說明 |
---|---|
android:checkedButton | 初始化時選中的選項 ID (android:id ) |
RadioGroup
提供了不少方法用於選中或者獲取選中的選項 ID ,下面列出經常使用的幾個
方法 | 說明 |
---|---|
check(int id) | 根據 id 選中某個選項 |
clearCheck() | 清除全部選項的選中狀態,也就時一個都沒選中 |
getCheckedRadioButtonId() | 獲取選中的選項 id |
事件 | 說明 |
---|---|
OnCheckedChangeListener | 當 RadioGroup 中的某個選項被選中時觸發 |
7. CheckBox 複選框
7.1 經常使用屬性
Android CheckBox (複選框) 繼承自 Button
,能夠說是隻有兩種狀態的按鈕 (選中或未選中狀態)
能夠把多個 CheckBox
放在一塊兒實現同時選中多項,可是,記住,它們之間沒有任何關係,一個的選中並不會影響另外一個選中或者不選中
CheckBox
除了從 Button
繼承而來的屬性外,沒有本身的屬性,但從 CompoundButton
繼承了一個屬性 android:checked
用於表示是否選中
屬性 | 說明 |
---|---|
android:checked | 設置或者獲取 CheckBox 是否選中 |
7.2 監聽方法
CheckBox
提供了幾個方法和事件用於設置或者獲取自身是否選中狀態
方法 | 說明 |
---|---|
isChecked() | 判斷自身是否選中 |
setChecked(boolean checked) | 設置自身是否選中狀態 |
事件 | 說明 |
---|---|
OnCheckedChangeListener | 選中狀態改變監聽器,當自身選中狀態變化時會觸發這個事件 |
8. ToggleButton 開關按鈕
8.1 經常使用屬性
ToggleButton (開關按鈕) 容許咱們在兩個狀態之間切換,有點相似於電燈的開關
ToggleButton
和 CheckBox
同樣都繼承自 CompoundButton
,因此都有 Button
的屬性和方法,又有 CompoundButton
的屬性 android:checked
屬性 | 說明 |
---|---|
android:disabledAlpha | 當 ToggleButton 處於 禁用 時的透明度 |
android:textOff | 當 ToggleButton 處於 關 時的文本,如:android:textOff="關閉" |
android:textOn | 當 ToggleButton 處於 開 時的文本 |
8.2 監聽方法
ToggleButton
提供了一些方法用來改變或獲取自身的狀態和開關時的文本
方法 | 說明 |
---|---|
getTextOff() | 獲取 ToggleButton 關時顯示的文本 |
getTextOn() | 獲取 ToggleButton 開時顯示的文本 |
setChecked(boolean checked) | 設置 ToggleButton 是否選中 |
setTextOff(CharSequence textOff) | 設置 ToggleButton 關時顯示的文本 |
setTextOn(CharSequence textOn) | 設置 ToggleButton 開時顯示的文本 |
toggle() | 改變 ToggleButton 的開關狀態 |
事件 | 說明 |
---|---|
CompoundButton.OnCheckedChangeListener | 當 ToggleButton 的開關狀態改變時觸發 |
9. Switch 開關
9.1 經常使用屬性
容許咱們在兩個狀態之間切換,有點相似於如今流行的滑動解鎖
Switch (開關) 也繼承自 Button
和 CompoundButton
,因此擁有它們的屬性、方法和事件
不過 Switch
也擁有本身的屬性,並且特別的多
屬性 | 說明 |
---|---|
android:showText | 設置 on/off 的時候是否顯示文字 |
android:splitTrack | 是否設置一個間隙,讓滑塊與底部圖片分隔 |
android:switchMinWidth | 設置開關的最小寬度 |
android:switchPadding | 設置滑塊內文字的間隔 |
android:switchTextAppearance | 設置開關的文字外觀 |
android:textOff | 按鈕沒有被選中時顯示的文字 |
android:textOn | 按鈕被選中時顯示的文字 |
android:textStyle | 文本的樣式(普通,粗體,斜體,粗體) |
android:track | 底部的圖片 |
android:thumb | 滑塊的圖片 |
android:typeface | 設置字體,默認支持這三種:sans, serif, monospace |
9.2 監聽方法
Switch
提供了一些方法用來改變或獲取自身的狀態和開關時的文本
方法 | 說明 |
---|---|
getTextOff() | 獲取 Switch 關時顯示的文本 |
getTextOn() | 獲取 Switch 開時顯示的文本 |
setChecked(boolean checked) | 設置 Switch 是否選中 |
setTextOff(CharSequence textOff) | 設置 Switch 關時顯示的文本 |
setTextOn(CharSequence textOn) | 設置 Switch 開時顯示的文本 |
toggle() | 改變 Switch 的開關狀態 |
事件 | 說明 |
---|---|
CompoundButton.OnCheckedChangeListener | 當 Switch 的開關狀態改變時觸發 |
10. ProgressBar 進度條
10.1 經常使用屬性
ProgressBar(進度條) 能夠用來顯示一個操做的進度,通常用於比較耗時的地方,好比下載進度條,好比加載等待
ProgressBar
有兩種模式,肯定性
和 不肯定性的
,有兩種外觀模式,條形
和 圓形
,因此總共有四種,這涉及到兩個屬性
屬性 | 說明 |
---|---|
android:indeterminate | 是否顯示不肯定模式,默認爲 true |
style | ProgressBar 的外觀樣式 |
android:style
屬性有如下幾個值能夠選擇
屬性 | 說明 |
---|---|
Widget.ProgressBar.Horizontal | |
Widget.ProgressBar.Small | |
Widget.ProgressBar.Large | |
Widget.ProgressBar.Inverse | |
Widget.ProgressBar.Small.Inverse | |
Widget.ProgressBar.Large.Inverse |
其餘屬性
屬性 | 說明 |
---|---|
android:max | 進度條的最大值 |
android:progress | 進度條已完成進度值 |
android:progressDrawable | 設置軌道對應的Drawable對象 |
android:indeterminate | 若是設置成true,則進度條不精確顯示進度 |
android:indeterminateDrawable | 設置不顯示進度的進度條的Drawable對象 |
android:indeterminateDuration | 設置不精確顯示進度的持續時間 |
android:secondaryProgress | 二級進度條,相似於視頻播放的一條是當前播放進度,一條是緩衝進度,前者經過 progress 屬性進行設置 |
10.2 監聽方法
方法 | 說明 |
---|---|
getMax() | 返回這個進度條的範圍的上限 |
getProgress() | 返回進度 |
getSecondaryProgress() | 返回次要進度 |
incrementProgressBy(int diff) | 指定增長的進度 |
isIndeterminate() | 指示進度條是否在不肯定模式下 |
setIndeterminate(boolean indeterminate) | 設置不肯定模式下 |
11. SeekBar ( 拖動條 ) 控件
11.1 經常使用屬性
SeekBar ( 拖動條 ) 控件通常用於音樂播放器或者視頻播放器的音量控制或者播放進度控制
SeekBar 是 ProgressBar
的子類,因此 ProgressBar的屬性均可以用
SeekBar 有如下幾個簡單的屬性
屬性 | 說明 |
---|---|
android:max ="100" | 滑動條的最大值 |
android:progress="60" | 滑動條的當前值 |
android:secondaryProgress="70" | 二級滑動條的進度 |
android:thumb = "@mipmap/sb_icon" | 滑塊的 drawable |
11.2 監聽方法
SeekBar 內置了 SeekBar.OnSeekBarChangeListener 事件
該事件會觸發三個方法
方法 | 說明 |
---|---|
onProgressChanged | 進度發生改變時會觸發 |
onStartTrackingTouch | 按住 SeekBar 時會觸發 |
onStopTrackingTouch | 放開 SeekBar 時觸發 |