记得之前很容易写出一个自定义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