可以填空的TextView

本文分享了在Android中创建类似填空题界面的方法,通过使用FrameLayout包裹TextView并在需要填空的地方用EditText覆盖。关键在于利用TextPaint测量文本宽度和高度,结合Layout获取字符宽度进行精确定位。
摘要由CSDN通过智能技术生成

最近学习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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值