Button在Android開發(fā)中可以說是無處不在,一般在xml中聲明锭碳,作為與用戶交互的常用組件袁稽,我們不僅僅讓其顯示和監(jiān)聽就覺得ok了,button還有很多其他有用和有趣的功能待你使用擒抛。
Button介紹
從View繼承圖來看推汽,Button的父類是TextView,說明Button擁有TextView的屬性蝗柔,包括
android:drawableTop? ?上圖下文
android:autoLink? ? ? ? ? 超鏈接
android:inputType? ? ? ? 限制輸入類型
等等...?
?當(dāng)然這些都是最基本,接下來介紹更好玩的Button屬性設(shè)置
變化的Button
——selector
? 當(dāng)你希望Button按下會出現(xiàn)變化民泵,此時需要在android:background設(shè)置 a stateListDrawable癣丧,顧名思義,這是一個有一系列狀態(tài)的圖片資源栈妆,你需要在drawable目錄下定義這個xml文件胁编,如下:
?文件命名為 button_state.xml
<selector?xmlns:android="http://schemas.android.com/apk/res/android"
android:constantSize=["true"|"false"] ?//固定尺寸,默認(rèn)false
android:dither=["true"|"false"] ? ? ? ?// 縮略圖匹配當(dāng)前像素鳞尔,默認(rèn)true
android:variablePadding=["true"|"false"]> ?//匹配當(dāng)前padding嬉橙,默認(rèn)false
<item
android:drawable="@[package:]drawable/drawable_resource"
android:state_pressed=["true"|"false"]
android:state_focused=["true"|"false"]
android:state_hovered=["true"|"false"]
android:state_selected=["true"|"false"]
android:state_checkable=["true"|"false"]
android:state_checked=["true"|"false"]
android:state_enabled=["true"|"false"]
android:state_activated=["true"|"false"]
android:state_window_focused=["true"|"false"]/>
//當(dāng)以上某行為true,用戶交互切換到那個狀態(tài)時寥假,執(zhí)行action市框;
在layout.xml文件中,需要將button的background設(shè)置為如下:
<Button
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:background="@drawable/button_state"/>
---shape
但android開發(fā)中更多地是使用不同形狀的button(例如圓形圖糕韧,圓角矩形圖)枫振,此時就不是使用selector,而是使用shape關(guān)鍵字萤彩,代碼設(shè)置類似上面的selector粪滤,但它有自己的屬性:
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape=["rectangle"|"oval"|"line"|"ring"]>
//一般用rectangle,將高和寬設(shè)置相等可以得到圓
android:radius="integer" ? ? ? ?//統(tǒng)一圓角半徑
android:topLeftRadius="integer"
android:topRightRadius="integer"
android:bottomLeftRadius="integer"
android:bottomRightRadius="integer"/>
//背景顏色梯度變化,如為solid則沒有漸變
android:angle="integer"
android:centerX="integer"
android:centerY="integer"
android:centerColor="integer"
android:endColor="color"
android:gradientRadius="integer"
android:startColor="color"
android:type=["linear"|"radial"|"sweep"]
android:useLevel=["true"|"false"]/>
android:left="integer"
android:top="integer"
android:right="integer"
android:bottom="integer"/>
<size
android:width="integer"
android:height="integer"/>
android:color="color"/>
android:width="integer"
android:color="color"
android:dashWidth="integer"
android:dashGap="integer"/>
在layout文件中設(shè)置請參考selector
傳送門:輕輕松松雀扶、半分鐘完成復(fù)雜的Button
button利器:Android Button Maker
當(dāng)然杖小,除了selector、shape,還有scale,transition 等模式愚墓,具體可參考android 官方 API指南:
? 最后提示一下剛踏進(jìn)android開發(fā)的小白同志予权,大神可以忽略:
button的監(jiān)聽可以在Java代碼設(shè)置button.setOnClickListener;也可以在xml中聲明android:onClick="selfDestruct",然后在代碼中設(shè)置
public void selfDestruct(Viewview){\\\\}
? 注意selfDestruct要一致
FloatingActonButton
作為Material Design 的特色組件浪册,fab具有很多動畫效果功能扫腺,如下圖所示
fab繼承與ImageView,擁有ImageView的一切屬性议经,但它有自己的一個特性斧账,注意命名空間是 ? ? ? ?xmlns:app="http://schemas.android.com/apk/res-auto",下面介紹它的屬性:
app:backgroundTint - 設(shè)置FAB的背景顏色煞肾。
app:rippleColor - 設(shè)置FAB點(diǎn)擊時的背景顏色咧织。
app:borderWidth -該屬性尤為重要,如果不設(shè)置0dp籍救,那么在4.1的sdk上FAB會顯示為正方形习绢,而且在5.0以后的sdk沒有陰影效果。所以設(shè)置為borderWidth="0dp"。
app:elevation - 默認(rèn)狀態(tài)下FAB的陰影大小闪萄。
app:pressedTranslationZ - 點(diǎn)擊時候FAB的陰影大小梧却。
app:fabSize - 設(shè)置FAB的大小,該屬性有兩個值败去,分別為normal和mini放航,對應(yīng)的FAB大小分別為56dp和40dp。
src - 設(shè)置FAB的圖標(biāo)圆裕,Google建議符合Design設(shè)計(jì)的該圖標(biāo)大小為24dp广鳍。
app:layout_anchor - 設(shè)置FAB的錨點(diǎn),即以哪個控件為參照點(diǎn)設(shè)置位置吓妆。
app:layout_anchorGravity - 設(shè)置FAB相對錨點(diǎn)的位置赊时,值有 bottom、center行拢、right祖秒、left、top等舟奠。
參考:01 Material Design之FloatingActionButton的使用
? ? ? ? ?02?Android Developer Button