- 浏览: 433719 次
- 性别:
- 来自: 苏州
文章分类
最新评论
-
yehuiyan8002:
支持中文查询
快熟查找联系人 -
lehehe:
现成的接口,免费试用,http://www.haoservic ...
天气Widget -
D.Z:
android:focusable="false&q ...
CheckBox在ListView 而导致其OnItemClickListener不会被触发 -
freecode:
碰到该问题,CheckBox的android:focusabl ...
CheckBox在ListView 而导致其OnItemClickListener不会被触发 -
echohfut:
哥们,新博客是不是在墙外啊?不能访问。还有你怎么进行博客迁移的 ...
博客 迁移
TextView 部分字体高
[功能]
TextView是不支持部分字段高亮的 但是我们可以进行扩展
[思路]
1. 利用LinearLayout 作为 TextView 的 容器
2. 字符串中每个字都使用一个TextView显示之
3. 还可以使用*.9.png来作为所有TextView的背景 使之看上去成为整体
[思路 步骤]
1. 定义TextSelectionHelper 构造函数 传入 Activity上下文 及 子View对齐方式 以及 layout_width layout_height
public class TextHighlightHelper{ Activity activity; LinearLayout lLayout; public TextHighlightHelper(Activity a,int l){ activity = a; lLayout = new LinearLayout(activity); lLayout.setOrientation(l); lLayout.setLayoutParams( new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,LinearLayout.LayoutParams.WRAP_CONTENT)); } }
2. 定义函数 用于接收字符串
//之所以每个字符都分别用一个TextView显示之 因为这样做 会使得后面颜色设定非常容易 public void addText(CharSequence cs){ for(int i=0;i<cs.length();i++){ TextView tv = new TextView(activity); tv.setText(cs.charAt(i)+""); lLayout.addView(tv); } }
3. 设定 部分字符 颜色
//函数解释: 从s开始 选取l个字符 颜色都设定为i public void addColor(int s,int l,int c){ if(l > lLayout.getChildCount()){ //error argument } else { for(int i=s;i<s+l;i++){ TextView item = (TextView)lLayout.getChildAt(i); item.setTextColor(c); } } }
4. 设定所有字符的背景 最好使用*.9.png 资源 因为长度可变
public void addBackResource(int r){ lLayout.setBackgroundResource(r); }
5. 得到整个LinearLayout 并供使用
public View loadView(){ return lLayout; }
6. 如何使用TextSelectionHelper
* TextHighlightUsage 的布局 并定义最外层的id
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:id="@+id/layout" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:text="HelloText1" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
* 具体使用:
public class TextHighlightUsage extends Activity { TextHighlightHelper tHelper1; TextHighlightHelper tHelper2; LinearLayout ll; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ll = (LinearLayout)findViewById(R.id.layout); //Text:HelloText2 CharSequence c1 = "HelloText2"; tHelper1 = new TextHighlightHelper(this,LinearLayout.HORIZONTAL); tHelper1.addText(c1); tHelper1.addColor(0, 3, Color.RED); tHelper1.addBackResource(R.drawable.dot); ll.addView(tHelper1.loadView()); //Text:创新源于模仿! CharSequence c2 = "创新源于模仿!"; tHelper2 = new TextHighlightHelper(this,LinearLayout.VERTICAL); tHelper2.addText(c2); tHelper2.addColor(1, 3, Color.RED); ll.addView(tHelper2.loadView()); } }
7. emulator 运行截图:
至于其能不能满足需求 见仁见智了 大家可以参考截图
评论
9 楼
ableouou
2010-08-27
文字变红:
String x="imp";
text.setText(Html.fromHtml("<font color=\"#ff0000\">"+x));//方法一
for(int i=0;i<bb.length;i++)
{
if(bb[i]=='i'&&bb[i+1]=='m'&&bb[i+2]=='p')
{
SpannableStringBuilder styled = new SpannableStringBuilder(text.getText());
styled.setSpan(new ForegroundColorSpan(Color.RED), i, i+2,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
text.setText(styled);
}
}//方法二
text.setText(Html.fromHtml("<font color=\"#ff0000\">红色</font>其它颜色"));//方法三
String x="imp";
text.setText(Html.fromHtml("<font color=\"#ff0000\">"+x));//方法一
for(int i=0;i<bb.length;i++)
{
if(bb[i]=='i'&&bb[i+1]=='m'&&bb[i+2]=='p')
{
SpannableStringBuilder styled = new SpannableStringBuilder(text.getText());
styled.setSpan(new ForegroundColorSpan(Color.RED), i, i+2,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
text.setText(styled);
}
}//方法二
text.setText(Html.fromHtml("<font color=\"#ff0000\">红色</font>其它颜色"));//方法三
8 楼
myth2loki
2010-08-26
String str="adsjoiasdjpaisdjpaidj"; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.laychangerout.main); textview=(TextView)findViewById(R.id.textview); SpannableStringBuilder style=new SpannableStringBuilder(str); style.setSpan(new ForegroundColorSpan(Color.RED),3,8,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); textview.setText(style); changer }
7 楼
GhostFromheaven
2010-08-26
mingkg21 写道
TextView tv = new TextView(this);
tv.setText(Html.fromHtml("<font color=\"#ff0000\">红色</font>其它颜色"));
试试这个
tv.setText(Html.fromHtml("<font color=\"#ff0000\">红色</font>其它颜色"));
试试这个
不错,不错,昨天刚在eoe里看到。
学习了
6 楼
1927105
2010-08-23
行的谢谢啊
5 楼
gryphone
2010-02-28
mingkg21 写道
TextView tv = new TextView(this);
tv.setText(Html.fromHtml("<font color=\"#ff0000\">红色</font>其它颜色"));
试试这个
tv.setText(Html.fromHtml("<font color=\"#ff0000\">红色</font>其它颜色"));
试试这个
嗯 可以的 谢谢
4 楼
mingkg21
2010-02-28
TextView tv = new TextView(this);
tv.setText(Html.fromHtml("<font color=\"#ff0000\">红色</font>其它颜色"));
试试这个
tv.setText(Html.fromHtml("<font color=\"#ff0000\">红色</font>其它颜色"));
试试这个
3 楼
gryphone
2010-02-28
是的 又鸡肋了 泪! 不过又学到一招 3Q!
2 楼
gryphone
2010-02-28
mingkg21 写道
我想直接用TextView是可以做到的。TextView的显示内容用Html格式就可以了。
是么?不知道 那可否给个连接 或例子呢? 谢谢!
1 楼
mingkg21
2010-02-28
我想直接用TextView是可以做到的。TextView的显示内容用Html格式就可以了。
发表评论
-
滑动抽屉 另一种解决办法
2010-07-09 17:43 0滑动抽屉 -
Spinner 定制化 增强版
2010-07-09 14:34 2609Spinner 作为下拉选 ... -
ListView 内容之分批显示
2010-06-25 20:38 5925ListView 内容循环显示 大家试想 假如 ... -
MediaScanner 研究
2010-06-23 15:21 3170MediaScanner 之所以拿MediaSc ... -
CheckBox在ListView 而导致其OnItemClickListener不会被触发
2010-06-22 20:55 19015CheckBox在ListView 而导致其OnItemCli ... -
获取Launcher 启动列表
2010-06-22 10:09 3138获取Launcher 启动列表 即 列出所有Launc ... -
PreferenceActivity 全接触
2010-06-19 12:53 9440PreferenceActivity 为了引入 ... -
android src 下载 编译 安装 全接触
2010-06-12 14:44 0android src - download install ... -
Intent.createChooser() 妙用
2010-06-12 11:14 5955Intent.createChooser(ntent targ ... -
SMS管理:收信箱 发信息 编写新信息
2010-06-07 08:14 14445SMS管理 [功能] 1. 收信箱:显示 ... -
求 android 手机 帮忙测试sms服务系统 谢谢
2010-06-05 08:25 1452Hi guys, 最近一段时间没有更新blog 因为一 ... -
流媒体 播放 理论篇
2010-05-28 14:42 2224流媒体播放 之所以为理论篇 因为该篇仅实现了播放功能 ... -
NDK 搭建与HelloWorld
2010-05-19 09:48 3226NDK [前提] 1. Cygwin 用于安装 ... -
自定义字体
2010-05-15 10:49 1221自定义字体: []代码 步骤] 1 ... -
模糊查找 再深入
2010-05-15 09:41 3158模糊查找 再深入 应某位大哥要求 再次对 SQLite ... -
快捷方式Bar + ViewGroup - 自定义
2010-05-09 09:20 2471TabActivity - 自定义 其实 这篇感觉极鸡 ... -
View 拖动&插入 研究
2010-05-09 07:14 3985View 拖动&插入 即: ... -
带图标 快捷键 Menu - 终极版
2010-05-04 20:23 1837Menu 改头换面 扩展如下: 1. 图标化文字 2 ... -
*.gif 解码 - 实践
2010-05-02 18:58 1737*.gif decode 前面已经说过 今天不打算再说了 ... -
*.gif 解码 - 理论
2010-05-01 21:11 1522我们知道Android 默认是不支持*.gif 的 但是 ...
相关推荐
总结一下,设置TextView部分文字颜色和背景主要通过使用`SpannableString`、`SpannableStringBuilder`或HTML格式的字符串来实现。开发者可以根据需求选择适合的方法,以达到高亮显示特定文字的效果。这在UI设计中...
在许多应用程序中,我们可能需要实现TextView中的文本高亮,并且能够对这些高亮的部分进行点击操作,例如在微博应用中,用户可能会@其他人、分享网址(http)或者引用特定的话题。这种功能在社交应用中非常常见,...
3. **计算文本位置**:当滑动事件发生时,需要计算出当前可视区域内的文本范围,以便确定哪些字符应该被高亮。这通常涉及到对布局参数的理解,如行高、字间距等。 4. **绘制高亮**:在`onDraw()`方法中,使用`...
当我们需要在文本中实现部分字体变色以及这部分变色文本具备点击事件时,通常会涉及到`TextView`的自定义处理和一些高级特性。在这个场景下,我们可以使用`SpannableString`、`ClickableSpan`等类来实现需求,这在...
如果你想要在一个TextView显示一个被高亮显示的子字符串。例如,我想让"123456789"中的"345"被高亮显示。注意,我这里指的只高亮一部分,而不是全部高亮。我不知道会不会有一些初学者会想到的是,让这些子字符串分部...
在Android开发中,有时我们需要根据用户的搜索关键词高亮显示TextView中的匹配内容,使其在大量文本中突出,提高用户体验。这个过程通常涉及到字符串处理和UI渲染技术。本文将深入讲解如何在Android中根据搜索内容...
例如,当用户输入特定字符序列时,可以高亮显示这些字符。 - 如果需要响应特定文字,可以使用`Selection.setSelection()`方法改变光标位置,或者用`SpannableStringBuilder`添加`CharacterStyle`来改变部分文字的...
在上述代码中,我们首先找到了要高亮显示的“高级功能”在原始文本中的位置,然后在`StringBuilder`中构建整个字符串。接着,通过`SpannableString`对不同部分应用不同的样式,红色部分使用`ForegroundColorSpan`,...
通过自定义一个TextView的子类,我们可以实现对文本中特定部分的格式化和交互。 首先,我们需要了解SpannableString和Spanned接口。这两个接口在Android中用于处理格式化的文本,可以设置文本的样式,如颜色、字体...
在Android开发中,TextView是显示文本的基本控件,它的使用非常广泛,无论是显示简单的文字信息,还是复杂的格式化文本,TextView都是不可或缺的一部分。这个压缩包文件"安卓textView相关-TextView中文本的处理.rar...
3. **mLinearGradient**:一个`LinearGradient`对象,用于创建从一种颜色渐变到另一种颜色的效果,常用于滑动解锁的高亮部分。 4. **matrix**:一个`Matrix`对象,用于处理渐变条的平移变换。 5. **mTranslateX**:...
例如,我们可以使用`ForegroundColorSpan`改变部分文字的颜色,使用`BoldSpan`使部分文字加粗,或者使用`URLSpan`创建可点击的链接。在使用`SpannableString`时,需要注意的是,不同的`Span`可能会相互影响,尤其是...
这个名为“高亮显示替换特定字符排序”的主题涉及到如何在安卓平台上处理文本,特别是替换特定字符并按照指定顺序进行排序,同时对替换后的结果进行高亮显示。下面我们将详细讨论这个知识点。 首先,我们需要理解...
- 在`TextView`中高亮显示搜索结果,可以使用HTML或者SpannableString来实现。例如,可以使用`SpannableString`的`setSpan()`方法添加`BackgroundColorSpan`,以改变指定文本的背景色。 - 对于`EditText`,由于其...
2. **分割文本**:根据设定的起始位置和字符个数,将文本分割为两部分:非高亮部分和高亮部分。 3. **创建两个`Paint`对象**:一个用于绘制非高亮文本,另一个用于绘制高亮文本。它们之间的主要区别在于颜色属性。 4...
这个自定义控件可以应用于各种场景,比如在阅读应用中高亮并展示关键词的详细解释,或者在新闻应用中提供关键词的快速链接。 在实际项目中,你可能还需要考虑更多细节,比如优化点击检测的性能,处理多行文本的点击...
同时,这也提供了一个很好的机会去实践文本匹配算法,了解如何在字符串中高效地查找和替换特定子串。 总的来说,`HighlightTextView`是Swift开发中一个实用的文本显示工具,能够提升用户体验,帮助开发者轻松实现...
在实际应用中,你可以根据需要自定义`matcherReg()`函数,以匹配任何你需要高亮的模式,例如邮箱地址、电话号码或者其他特定字符串。此外,除了颜色,还可以设置其他样式,比如字体大小、下划线等,只需创建相应类型...
在iOS开发中,关键字...总的来说,iOS中的关键字高亮涉及到了富文本处理、属性字符串、文本渲染等多个方面,开发者可以根据实际需求选择合适的方法来实现。通过合理的设计和优化,可以为用户提供更加友好的交互体验。
本文将详细讲解如何在Android中实现TextView字符串关键字变色,包括固定字符串的关键字变色以及搜索关键字变色。 ### 一、字符串关键字变色 在某些场景下,我们可能需要将固定的字符串中的一部分变色,例如在显示...