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. 定义函数 用于接收字符串
-
-
- 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. 设定 部分字符 颜色
-
-
- public void addColor(int s,int l,int c){
- if(l > lLayout.getChildCount()){
-
- }
- 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;
-
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
-
- ll = (LinearLayout)findViewById(R.id.layout);
-
-
- 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());
-
-
- CharSequence c2 = "创新源于模仿!";
- tHelper2 = new TextHighlightHelper(this,LinearLayout.VERTICAL);
- tHelper2.addText(c2);
- tHelper2.addColor(1, 3, Color.RED);
-
- ll.addView(tHelper2.loadView());
- }
- }
7. emulator 运行截图:
至于其能不能满足需求 见仁见智了 大家可以参考截图
分享到:
相关推荐
在许多情况下,我们可能需要对TextView中的特定文字进行高亮显示,比如突出关键词、错误提示或重要信息。本篇将详细介绍如何设置TextView的部分文字颜色和背景,使其更加醒目。 首先,我们可以使用`SpannableString...
在许多应用程序中,我们可能需要实现TextView中的文本高亮,并且能够对这些高亮的部分进行点击操作,例如在微博应用中,用户可能会@其他人、分享网址(http)或者引用特定的话题。这种功能在社交应用中非常常见,...
本篇内容将深入探讨如何使用自定义的TextView来实现词组高亮的功能。 首先,我们创建一个名为`HighlightTextView`的自定义视图类,它继承自`View`。这个类的核心在于重写`onDraw()`方法,以处理文本的绘制。在`...
在XML布局中,可以将`android.widget.TextView`替换为`com.yourpackage.EmphasisTextView`,然后利用属性来指定高亮部分。例如: ```xml android:layout_width="wrap_content" android:layout_height="wrap_...
当我们需要在文本中实现部分字体变色以及这部分变色文本具备点击事件时,通常会涉及到`TextView`的自定义处理和一些高级特性。在这个场景下,我们可以使用`SpannableString`、`ClickableSpan`等类来实现需求,这在...
在Android开发中,TextView是展示文本的基本控件,但有时我们需要对其中的部分文字进行特殊处理,比如高亮显示或响应点击事件。`TextView`的文本高亮和点击行为可以通过`ClickableSpan`类来实现,然而,`...
下面我们将详细探讨如何实现`EditText`和`TextView`的部分文字响应。 首先,`TextView`是用于展示静态文本的视图,而`EditText`则用于接收用户输入。尽管它们处理文本的方式不同,但都可以通过设置`Spannable`对象...
在Android开发中,TextView是显示文本的基本控件,它的使用非常广泛,无论是显示简单的文字信息,还是复杂的格式化文本,TextView都是不可或缺的一部分。这个压缩包文件"安卓textView相关-TextView中文本的处理.rar...
通过自定义一个TextView的子类,我们可以实现对文本中特定部分的格式化和交互。 首先,我们需要了解SpannableString和Spanned接口。这两个接口在Android中用于处理格式化的文本,可以设置文本的样式,如颜色、字体...
TextView默认提供了多种样式和颜色选择,但若想实现更个性化的显示,可以自定义颜色、字体、边框等。例如,通过重写`onDraw()`方法,我们可以绘制自定义的背景图案或文字颜色。 2. **动画效果** 为TextView添加...
4. **设置回调**:如果需要监听用户点击,可以设置一个OnLinkClickListener,当用户点击高亮部分时,回调会被触发。 5. **处理高亮**:Linker会自动处理TextView中的文本,找到匹配的部分并进行高亮显示。 在...
以上只是部分可能实现的功能,实际的`HTextView-master`项目可能会包含更多创新和实用的特性。通过研究这个项目,开发者不仅可以学习到如何自定义Android组件,还能了解到如何通过编程实现各种视觉特效,提升应用的...
例如,我们可以使用`ForegroundColorSpan`改变部分文字的颜色,使用`BoldSpan`使部分文字加粗,或者使用`URLSpan`创建可点击的链接。在使用`SpannableString`时,需要注意的是,不同的`Span`可能会相互影响,尤其是...
3. **高亮字体**:可能与普通文本有不同的字体样式。 4. **`highlightText()`方法**:此方法负责遍历文本,查找并替换关键词,将它们包裹在具有高亮样式的`NSMutableAttributedString`中。 5. **`layoutSubviews()`...
我们可以通过XML布局文件或代码动态创建并设置TextView的属性,如文本内容、字体大小、颜色等。例如: ```xml <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_...
使用SpannableString或SpannableStringBuilder可以实现文本的高亮、颜色变化等效果。例如: ```java SpannableString ss = new SpannableString("Hello, World!"); ss.setSpan(new ForegroundColorSpan(Color....
1. **NSAttributedString**:这是最常用的方法,通过创建NSAttributedString对象,我们可以设置文本的字体、颜色、下划线等属性。对于关键字高亮,我们可以在遍历文本字符串时,对每个关键字应用不同的样式。例如,...
有时候,我们可能需要在应用程序中实现TextView的部分文字具有不同的颜色,以突出显示或者强调某些特定信息。本篇将详细讲解如何在Android编程中实现TextView部分颜色变动的方法。 首先,我们需要了解Android中的...
- AutoSizeTextView:API 26及以上版本提供了自动调整字体大小的功能,可以根据TextView的宽度自动缩放字体大小以适应文本内容。 7. **自定义TextView** - 如果需要实现更复杂的功能,可以继承TextView并重写其...
7. **高亮选中部分**: 通过自定义`UIAppearance`代理,可以改变`TextView`选中文本的颜色,增强用户的交互反馈。 8. **行间距和字间距**: 调整`NSParagraphStyle`的`lineSpacing`和`characterSpacing`属性,可以...