Material Design控制項使用(二)

2021-02-20 劉桂林

本篇接著之前的Material Design控制項總結(一)往下學習support design包下其餘控制項,如果對Material Design不太熟悉的同學最好把第一篇看完再來看第二篇效果更好

本篇將介紹剩下的控制項

FloatingActionButton

TabLayout

Snackbar

TextInputLayout

FloatingActionButton

作為MD風格最具爭議的控制項,本篇將先學習他的簡單使用,然後再從日常app中FAB常見的兩種樣式入手進行介紹

FloatingActionButton是重寫ImageView的,所以FloatingActionButton擁有ImageView的一切屬性。

基本屬性

xml參數含義備註app:backgroundTintFAB的背景顏色
app:rippleColorFAB點擊時的背景顏色
app:elevation默認狀態下FAB的陰影大小默認為6dpapp:pressedTranslationZ點擊時候FAB的陰影大小默認為12dpapp:fabSize設置FAB的大小該屬性有兩個值,分別為normal和mini,對應的FAB大小分別為56dp和40dp。src設置FAB的圖標Google建議符合Design設計的該圖標大小為24dpapp:layout_anchor設置FAB的錨點即以哪個控制項為參照物設置位置app:layout_anchorGravity設置FAB相對錨點的位置有 bottom、center、right、left、top等

有時候會出現點擊效果不顯示的情況,可以試試 加上 clickable = 「true」 這個屬性,應該是焦點未獲取到導致的

簡單使用

xml布局

至於點擊事件跟普通控制項並無差別這裡不過多說明

接下來將實現二個比較常見的效果

1.隨著appbar隱藏

這裡是在Material Design控制項總結(一)基礎上實現的也就是利用了Fab app:layout_anchor錨點的屬性將它與AppBarLayout關聯,然後隨著CollapsingToolbarLayout而隱藏,activity中並無其他代碼

2.隨著Recyclerview滑動而隱藏

相對於上面在Fab加一個屬性app:layout_behavior (至於這個是幹嘛的這裡先貼上一段介紹Behavior只有是CoordinatorLayout的直接子View才有意義。可以為任何View添加一個Behavior.Behavior是一系列回調。讓你有機會以非侵入的為View添加動態的依賴布局,和處理父布局(CoordinatorLayout)滑動手勢的機會。)後面有空再講解
這裡先上xml

其中ScrollAwareFABBehavior是我們自定義的一個Behavior。

TabLayout

以前我們在應用viewpager的時候,經常會使用TabPageIndicator來與其配合達到tab選項卡效果。但是畢竟是第三方庫用著總有點不放心,然而隨著support design包的到來谷歌終於為我們帶來了原生控制項tablayout,從此選項卡效果不在需要第三方就可以實現

基本屬性

屬性含義app:tabTextColorTab未被選中字體的顏色app:tabSelectedTextColortab被選中後,文字的顏色app:tabIndicatorColorTab指示器下標的顏色

使用也非常簡單直接根據效果來看代碼好了

xml布局

除了使用上面介紹的屬性外,給viewpager加了一個app:layout_behavior=」@string/appbar_scrolling_view_behavior」 來實現當recyclerview下滑的時候隱藏toolbar,對這裡不是太理解的小夥伴可以在看看第一篇中關於CoordinatorLayout的部分應該就可以理解

activity中代碼

TabLayout只需調用setupWithViewPager()與viewpager關聯即可至於每個tab的title在viewpager的adapter中getPageTitle()設置即可

adapter代碼

除了上面簡單用法TabLayout常用的方法如下:

這裡解釋下setTabMode(int mode)方法,直接看效果就明白了

tabLayout.setTabMode(TabLayout.MODE_FIXED);

TabLayout.MODE_FIXED->tablayout直接顯示出所有title

tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE);

TabLayout.MODE_SCROLLABLE->tablayout在當前屏幕下能顯示多少就顯示多少title顯示不下的可以滑動tablayout查看

Snackbar

Snackbar使用的時候需要一個控制項容器用來容納Snackbar.官方推薦使用CoordinatorLayout,因為使用這個控制項,可以保證Snackbar可以讓用戶通過向右滑動退出。並且Snackbar不會遮擋FAB的顯示了,當Snackbar出現時FAB會自動上移。

使用跟Toast類似

除了這樣之外Snackbar還可以支持一個按鈕

action按鈕顏色可以通過setActionTextColor()來設置,而彈出的message顏色很可惜沒有提供方法設置
不過我們可以看下setActionTextColor()源碼

可以發現是給mView中的Action按鈕的TextView設置顏色,經過繼續查看發現mView為Snackbar內部類SnackbarLayout而該內部類的布局為design_layout_snackbar_include接下來看該布局文件

是不是有點恍然大悟,哦原來就是一個普通的布局,那接下來思路就非常清晰了拿到id為snackbar_text的TextView然後setTextColor,經過查找發現沒有方法可以直接拿到該TextView,那我們就先拿到SnackbarLayout然後findviewbyid()
發現提供了getView()方法獲取到SnackbarLayout

那修改顏色就簡單了直接附上代碼

TextInputLayout

該控制項是用於EditView輸入框的,主要解決之前EditView在獲得焦點編輯時hint屬性提示語消失,這一點在一個頁面有多個EditView輸入框的時候不是很好,因為很有可能用戶在輸入多個EditView之後,不知道當前EditView需要輸入什麼內容。為了解決這一問題,TextInputLayout就此誕生了。

TextInputLayout控制項和LinearLayout完全一樣,它只是一個容器。跟ScrollView一樣,TextInputLayout只接受一個子元素。子元素需要是一個EditText元素說,先上效果圖:

還真別說體驗感上了一個檔次,使用也非常簡單接下來看xml代碼

代碼也可以看出TextInputLayout包裹著EditView。
為了達到以上效果,我們還需添加如下錯誤提示代碼:

TextInputLayout 不僅能顯示提示語,而且還能把錯誤信息顯示在EditView之下。

TextInputLayout常用的方法有如下:

setHint():設置提示語。

getEditText():得到TextInputLayout中的EditView控制項。

setErrorEnabled():設置是否可以顯示錯誤信息。

setError():設置當用戶輸入錯誤時彈出的錯誤信息。

另外需要注意下

setErrorEnabled開啟錯誤提醒功能。這直接影響到布局的大小,增加底部padding為錯誤標籤讓出空間。在setError設置錯誤消息之前開啟這個功能意味著在顯示錯誤的時候布局不會變化。

如果傳入非null參數的setError,那麼setErrorEnabled(true)將自動被調用。

TextInputLayout選中的顏色為主題中colorAccent屬性

到此SupportDesign控制項基本介紹完了.如有疑問歡迎討論

這是圓圓的第四次投稿,Material Design後半部就到這裡結束了額。歡迎大家留言討論,看到都會回額。

掃一掃關注微信公眾,每天都有不一樣的精彩!

相關焦點

  • 20個非常棒的Material Design設計概念案例
    自從去年google在android新版本Lollipop提出的material design概念後,在世界各地瘋狂地掀起一陣material design熱。Material design不僅看起來令人驚嘆,也是一個前所未有的設計理念。不僅對設計師的影響深大,對開發人員亦是。現在普遍流行的應用程式都採用這種新的設計理念,並且android端上的APP也是採用material design這種設計理念。對於那些還尚未採用這種設計理念的App,這裡我提一些自己的概念。
  • material2 發布 7.0.1,Angular 的 Material Design 風格框架
    Angular 的 Material Design 風格框架 material2 發布了 7.0.1 版本,這主要是一個 bug 修復版本:Bug 修復
  • 「MD規範」1.1-Material Design設計案例講解-Basil
    一種新穎的導航方法雖然導航抽屜通常用於目錄組織,但Basil的交互模型使用了許多組件來創造一種新穎且有時令人驚訝的體驗。電腦和平板上的導航在電腦和平板上,Basil的主要內容可以通過固定的標籤訪問。在電腦上可以使用垂直滾動條瀏覽每個章節的內容,平板上則使用水平滾動條。選擇菜譜後,使用Tabs(選項卡)在配方和工序之間切換。
  • Excel 控制項【窗體控制項】和【ActiveX控制項】使用基礎教程
    插入好控制項後,對控制項的屬性進行設置,右鍵單擊控制項,單擊【設置控制項格式】,在彈出的【設置控制項格式】對話框中選擇【控制】選項卡。  【三維陰影】:如果希望控制項具有立體陰影效果,可以勾選【三維陰影】前的複選框。   控制屬性設置好後,單擊【確定】完成。   第四,excel 控制項之ActiveX控制項ActiveX控制項,比窗體工具條中的控制項要更靈活,是VBE中用戶窗體控制項的子集,在Excel工作表中和VBE編輯器中都是可用的,尤其在要對使用控制項時發生的不同事件進行控制時。
  • Icon使用極其簡單? Android-Iconics 開源庫介紹
    然後推薦使用這個開源庫。優質Icon多到數不清,還可以隨意修改icon的顏色,大小,使用起來略爽。簡書和掘金上搜不到相關博客,踩了點坑,凡事只能靠自己啊。項目demo地址請點擊這裡:https://github.com/zjxuzhj/IconFontDemo一、添加依賴compile "com.mikepenz:iconics-core:2.8.2@aar"compile 'com.android.support:appcompat-v7:25.1.0'二、
  • NET開發-WebForm中Web控制項是伺服器控制項,按鈕、標籤控制項如何使用
    Web控制項介紹在.NET Web應用程式中,有WebForm和MVC這2種UI框架, 在WebForm中,其控制項分為Web伺服器控制項和HTML控制項(或Web客戶端控制項)。如果要在C#代碼中使用HTML伺服器控制項,則需要添加:using System.Web.UI.HtmlControls命名空間。
  • Material Design:為什麼 FAB (Floating Action Button) 是不好的...
    看上去 FABs 好像提供了理想的條件及好的用戶體驗,但在實際使用中,廣泛使用的 FABs 可能對應用的整體體驗有所影響,這裡有一些原因:它影響了沉浸式的用戶體驗FABs 視覺突出——它確確實實在其它所有 UI 原素的上方,例如,添加一個 FAB 按鈕尤其會影響到那些旨在提供的沉浸式體驗的應用程式(或屏幕)。
  • 附源文件 | 如何製作可復用iOS/Material Design元件庫?
    1.iOS和Material Design(簡稱MD)元件庫下載2.通過源文件學習iOS和MD兩大設計規範的組件控制項體系3.如何通過Axure元件庫提高效率文章大綱:1.統一可復用元件庫價值2.iOS和MD元件庫使用範圍及下載地址3.如何製作統一可復用的Axure元件庫4.如何使用統一可復用的Axure元件庫
  • 如何製作可復用iOS/Material Design元件庫?(附源文件)
    3.如何製作統一可復用的Axure元件庫4.如何使用統一可復用的Axure元件庫5.通過源文件,學習iOS和MD兩大設計規範的組件控制項體系1.統一可復用元件庫價值1.統一產品的用戶體驗:涉及到多個互動設計師/PM協同時,如果各個互動設計師/PM沒有使用統一的元件時,會出現同一種類型不同的組件設計。
  • SpreadJS 純前端表格控制項應用案例:在線問卷系統
    由某軟體公司研發的在線問卷系統,是一款通過收集網絡信息,幫助問卷設計者和數據分析師們分析消費者線上行為特徵和態度的系統平臺,使用該系統可批量而精確地抽取目標網頁中的任何數據及信息,快速實現實時的信息獲取。
  • 谷歌Material Design動效篇
    二、迅捷響應交互行為動效的迅捷反饋,可以讓用戶充滿信任感和愉悅感。當用戶與應用交互時,所反饋的動效不但極具美感,符合物理邏輯,而且能夠愉悅用戶。反饋動效的設計必須深思熟慮且具有目的性,而不能隨性設計,反饋動效應溫和 ,不讓用戶分心。
  • SpreadJS 純前端表格控制項應用案例:表格數據管理平臺
    下面,讓我們一起來看看該公司是如何在「表格數據管理平臺」中應用表格技術,實現「類Excel報表設計」(https://www.grapecity.com.cn/developer/spreadjs/scenarios/excel-design)功能,從而構建出企業個性化行業應用、集成應用和複雜業務報表的。
  • Material Design 有什麼缺點?
    成功的視覺效果FAB 對 Google design 是個很好的視覺突破。平面設計中的「點線排列」概念,是一個非常靈活和突出的「點」元素,而這種強大元素的界面設計在很難出現之前。Google 似乎在引導讓 FAB 使用色彩設定中鮮豔的輔色,使界面的色彩更加豐富鮮豔。總之,FAB的存在使UI感覺更加生動、豐富、愉悅和有吸引力,我認為這是一個很好的視覺效果。
  • E圖表述:Excel控制項、二:表單控制項-組合框、列表框
    無論是表單控制項還是ActiveX控制項,作者都認為,組合框和列表框都應該放在一起說。先看一下它們長什麼樣子吧。在用這兩個控制項的過程中,作者覺得這兩個控制項基本沒有什麼區別(尤其是表單控制項)。如果非要說它們倆不一樣的地方,那就是列表框是展開的列表,而組合框是下拉式的列表。
  • 整理下Labview 的Table表格控制項使用
    這段時間,在重寫車載導航的自動化測試Labview程序,在過程種使用表格控制項,以前用到不多,也沒太留意,等到實際使用時,發現還是碰到滿頭包的,下面分享一下自己學到的經驗,一來是自我總結一下,二是分享給正在學習Labview朋友,避免走我的彎路。
  • Android Material Design系列之主題樣式介紹說明等
    要是光講這些文章有點短,不太充實,所以今天我們再補充兩個非常簡單的 Material Design 風格的控制項,可能大家都知道了,知道的就不用看了哈,略過就好。TextInputLayoutTextInputLayout繼承LinearLayout,因此我們需要將EditView包含在TextInputLayout之內才可以使用,言外之意:TextInputLayout不能單獨使用。
  • Python界面編程之PyQt5基礎控制項介紹,QSlider滑動條控制項使用詳解
    前幾篇內容我們了解了使用Python中PyQt5庫進行GUI程序設計時,常用的幾種控制項類。比如:標籤QLabel(參見盤點界面編程中那些常用控制項,詳解PyQt5中標籤控制項QLabel的使用)單行文本QLineEdit(參見Python界面編程之PyQt常見控制項展示,QLineEdit文本框類使用詳解)多行文本QTextEdit(參見Python界面編程之PyQt常見控制項展示,QTextEdit文本框類使用詳解)按鈕QPushButton(參見Python用PyQt5設計漂亮界面之按鈕類控制項的使用
  • SpreadJS 純前端表格控制項應用案例:雨諾訂單管理系統(雨諾OMS)
    二、企業介紹對線下,OMS支持醫藥流通領域的數家ERP供應商,能夠滿足大部分線下企業的管理需求,同時提供二次擴展能力,允許對接任何ERP服務商,截止當前,OMS已經在50餘家客戶中成功應用,每年為客戶提供數千萬的訂單服務。四、項目架構圖