記得之前很容易寫出一個自定義view,若是很長時間沒有寫,是很容易生疏的,通常自定義view有組合的viewgroup,有從最小單元的view入手,而此次要寫的自定義選詞填空view是從view出發的,在作以前也搜過相關的view,大部分都是從textview的span入手的,可是textview的span寫的話,會遇到各類問題,很可貴去擴展,所以下定決心本身要寫一個跟本身產品相關的選詞填空view。先直接看作出來的效果: android
在這裏分爲兩種類型的選詞填空題,分爲解析類和作題類,解析類只會顯示答案的正確與否,作題類型會直接把選項填上去的場景。而在作題類會有兩種狀況:git
大概的邏輯就是上面幾點了,雖說是很清楚,可是自定義view會涉及到文字的換行,下劃線的換行,非答案的文字測量,答案的文字測量,下劃線的測量,而下劃線的測量是根據有沒有答案來測量的,在有答案的時候,會根據答案的長度來繪製下劃線的,沒有答案的時候,會給下劃線一個默認的長度。github
是否onMeasure過程:bash
requestLayout
,不然直接invalidate
。<com.xc.blank.BlankRootView
android:id="@+id/blank_root_view"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
複製代碼
若是想本身定義選項的view那你能夠直接定義BlankView:佈局
<com.xc.blank.BlankView
android:id="@+id/blankView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/dp_23"
android:layout_marginTop="20dp"
android:layout_marginRight="@dimen/dp_16"/>
複製代碼
後期會考慮加入自定義屬性!!!spa
若是想第一時間看demo效果掃描下面二維碼:code
github地址:進入cdn