"@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内容需要有终止条件,否则很快就递归调用,栈溢出了。

android text的更多相关文章

  1. android text中显示HTML语言

    package com.example.test; import java.io.InputStream; import java.net.URL; import android.annotation ...

  2. Android Text Color设置不当造成信息不显示

    Android Text Color设置不当造成信息不显示 Android 的TextView 可以设置颜色,默认我们可以设置成 #000000 ,但某一次设置成了#00000000 ,就是多了两个0 ...

  3. React Native & Android & Text Input

    React Native & Android & Text Input react native clear input value https://stackoverflow.com ...

  4. android:text 文字阴影设置

    <SPAN style="FONT-SIZE: 16px"><TextView  android:id="@+id/text"       a ...

  5. android API之android.text.TextWatcher

    When an object of a type is attached to an Editable, its methods will be called when the text is cha ...

  6. Android笔记——Button点击事件几种写法

    Button点击事件:大概可以分为以下几种: 匿名内部类 定义内部类,实现OnClickListener接口 定义的构造方法 用Activity实现OnClickListener接口 指定Button ...

  7. Android ViewPager打造3D画廊

    本文已授权微信公众号:鸿洋(hongyangAndroid)在微信公众号平台原创首发. 网上有很多关于使用Gallery来打造3D画廊的博客,但是在关于Gallery的官方说法中表明: This cl ...

  8. Android混合开发之WebViewJavascriptBridge实现JS与java安全交互

    前言: 为了加快开发效率,目前公司一些功能使用H5开发,这里难免会用到Js与Java函数互相调用的问题,这个Android是提供了原生支持的,不过存在安全隐患,今天我们来学习一种安全方式来满足Js与j ...

  9. Android混合开发之WebView与Javascript交互

    前言: 最近公司的App为了加快开发效率选择了一部分功能采用H5开发,从目前市面的大部分App来讲,大致分成Native App.Web App.Hybrid App三种方式,个人觉得目前以Hybri ...

随机推荐

  1. Sublime Text对Python代码加注释的快捷键

    一直在Coursera上补基础课,发现很多课程都用Python作为教学语言,学了一下感觉果然好,简直是用英语在写代码.(我建Python目录的时候发现去年学过一点点Python,居然一点都不记得了= ...

  2. Uiautomator自动编译运行脚本

    Uiautomator的编译运行过程需要输入好几个命令,太麻烦. 花了点时间写了个简单的bat.方便多了.id输入当前使用的SDK ID号(android list target命令可以查看到),cl ...

  3. MyBatis复习

    一.对JDBC的总结 1.数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响数据库性能. 解决方案:使用数据库连接池管理数据库连接. 2.将sql语句硬 ...

  4. 5.Firedac错误信息

    主要错误信息属性: 1.EFDDBEngineException Errors -- TFDDBError对象集合. ErrorCount --错误的记录数 Kind -- DBMS的错误集合. Me ...

  5. 生成API文档的软件

    SandCastle:http://shfb.codeplex.com/SourceControl/latest#1952439 HTML Help:http://msdn.microsoft.com ...

  6. 第五百八十二天 how can I 坚持

    好吧,是我错了,昨天,做好自己就行了,别人怎么样是别人的事,永远保持一颗单纯向上的心. 时间过得真快,明天又周六了.. 睡觉.

  7. 离线安装VS 2013开发工具的方法!

    目前微软已正式发布了VS 2013的开发工具,但安装VS 2013开发工具前必须安装或升级到IE10,否则无法进行安装.本文主要介绍在Windows Server 2008 R2 SP1下离线安装IE ...

  8. MFCC matlab code

    %function ccc=mfcc(x) %归一化mel滤波器组系数 filename=input('input filename:','s'); [x,fs,bits]=wavread(filen ...

  9. UVa 10300 - Ecological Premium

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=94&page=s ...

  10. VC++ 将IP字符串转为 DWORD值

    CString strIP="192.168.1.184"; DWORD dwAddress= ntohl( inet_addr(strIP)); m_IPAddr.SetAddr ...