最近学习android的时候,突然想怎么实现类似于填空题的界面,突然有了思路,共享一下。效果图如下
实现思路:将一个TextView使用FrameLayout进行包装,然后在需要填空的字符串处使用EditText进行覆盖即可;
主要的点就是如何确定需要填空的字符串的位置,这里使用TextPaint测量文本的宽度和高度,利用Layout获取每行的字符的宽度然后进行计算
源码如下
public class FillBlankView{
/**
* 设置要替换的目标TextView及文本
* @param context
* @param targetTextView
* @param targetText
* @return
*/
public View setTargetViewAndText(final Context context, final TextView targetTextView, final String targetText) {
String text = targetTextView.getText().toString();
if (text == null || text.indexOf(targetText) < 0) {
return null;
}
final FrameLayout container = decorateTextView(context, targetTextView);
targetTextView.post(new Runnable() {
@Override
public void run() {
List<TextDemensions> demensions = replaceTargetTextAndGetDemensions(targetTextView, targetText);
int lineHight