两点技巧-给TextView添加Tag,点击空白收起键盘

1. 前言

这篇给大家带来两个开发中用到的东西,地址如下:

  • 全局点击空白收起键盘
  • TextView 带标签

希望大家star一下。

2. 点击空白收起键盘

大家有没有被测试提这种bug,我要点击空白收起键盘!!!其实很简单,代码如下。

    private static void setTouchListener(final Activity context){
        context.getWindow().getDecorView().setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE);
                if (context.getCurrentFocus() != null) {
                    imm.hideSoftInputFromWindow(context.getCurrentFocus().getWindowToken(),0);
                }else {
                    imm.hideSoftInputFromWindow((context.findViewById(android.R.id.content)).getWindowToken(),0);
                }
                return false;
            }
        });
    }

就是给DecorView设置TouchListener,然后在onTouch里面,收起键盘,并返回false。

3. TextView + Tag

效果是这样的。
两点技巧-给TextView添加Tag,点击空白收起键盘_第1张图片

同样,看效果也不难。大家都知道Span,没错,我们这里用ImageSpan来做。不过,有几点我们需要注意。

  • ImageSpan对齐的问题
  • 设置行数的情况下,如何处理

3.1 ImageSpan的问题

关于这个问题,网上也有处理,解决办法链接

不过,上面的办法也存在几个问题,暂时没有好的处理办法,主要是适配上有问题,在不同的手机和多行情况下,是存在问题的。我们只能通过调整

            int top= drHeight/2 - fontHeight/2;
            int bottom=drHeight/2 + fontHeight/2;

部分的代码去调整。希望知道的朋友告知一下。

3.2 设置行数的情况下

设置行数的情况下,我们的tag部分可能显示不出来,我们需要做一下处理。

  • 计算完整显示需要的长度(Normal文字的长度+TagView的长度)
  • 比较拥有的长度和需要的长度,根据需求做截断处理

我们通过TextPaint测量宽度。具体的代码,大家看代码了吧。

4. 推广

  • 全局点击空白收起键盘
  • TextView 带标签

希望大家给个star鼓励一下子。


补充:

关于imagespan,不居中的问题,正确的解决办法在这里。http://www.cnblogs.com/withwind318/p/5541267.html

你可能感兴趣的:(Android)