zoukankan      html  css  js  c++  java
  • android text

    "@you bang---

      go on -------"

    需要做分享内容,前面有段格式固定写死,同时颜色为灰色;后面的内容可以编辑,颜色为黑色,同时支持多行

    有人用textview做固定格式,edittext做可编辑部分;

    如果是单行,感觉还没多大问题,但多行,第二行起始位置就无法控制了。

    1.字体部分颜色灰色问题:

    对于android的显示字体样式,有Spannable对象,可以高亮部分字体,还可以给字体设置超链接

    参考http://blog.csdn.net/hitlion2008/article/details/6856780

    SpannableStringBuilder style=new SpannableStringBuilder(mShareTitle + shareContentString);  
    style.setSpan(new ForegroundColorSpan(Color.LTGRAY),0,mShareTitle.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);  
    shareContentTxt.setText(style);
    Editable b = shareContentTxt.getText();  
    shareContentTxt.setSelection(b.length());

    2.@you不允许编辑问题:

    偷换概念,发现如果edittext修改的对象在不许编辑区域,就让内容还原,从而产生不可编辑的错觉

    这里用的TextWatcher

    shareContentTxt.addTextChangedListener(new TextWatcher() {
                int current_start = -1;
                boolean last_changed = false;
                CharSequence current_s;
                @Override
                public void afterTextChanged(Editable s) {
                    if (current_start < mShareTitle.length() && !last_changed) {
                        last_changed = true;
                        SpannableStringBuilder style=new SpannableStringBuilder(current_s);  
                        style.setSpan(new ForegroundColorSpan(Color.LTGRAY),0, mShareTitle.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
                        shareContentTxt.setText(style);
                        shareContentTxt.setSelection(shareContentTxt.getText().length());
                    } else {
                        last_changed = false;
                    }
                }
                @Override
                public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                    current_start = start;
                    current_s = s.toString();
                }
    
                @Override
                public void onTextChanged(CharSequence s, int start, int before, int count) {
                }
                
            });

    他们将依次调用beforeTextChanged onTextChanged afterTextChanged方法,在这里修改editable内容需要有终止条件,否则很快就递归调用,栈溢出了。

  • 相关阅读:
    Tomcat6.0的Thisisverylikelytocreateamemoryleak异常
    一个不错的能将HTML表格导出为excel,pdf等的jquery插件
    关于tomcat8在windows2008下高并发下问题的解决方案
    应用部署到JBOSS上遇到的问题
    [置顶] 将项目从tomcat 迁移到JBoss
    struts2 if标签示例
    用Java集合中的Collections.sort方法对list排序的两种方法
    SAP 关于标准成本、计划成本、目标成本、实际成本
    “癌症村”里的“净水神器”
    iis虚拟目录引发的路径问题
  • 原文地址:https://www.cnblogs.com/Empenguin/p/3710288.html
Copyright © 2011-2022 走看看