`

android_5 修改一个textview中的字符串的颜色

 
阅读更多

例:Hello World, 欢迎观看《android教程》哈哈!

要求把《android教程》变红,其他为绿

 

给textView定义一个id,定义id的方法:android:id="@+id/tv"

 

android:autoLink="all" 表示web/mail/map之类的都加链接

 

修改main.xml:

<TextView 
	    android:id="@+id/tv"
	    android:layout_width="fill_parent"
	    android:layout_height="wrap_content"
	    android:textSize="20sp"
	    android:textColor="#00ff00"
	    android:text="@string/say"
	    />

 

 String.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="hello">Hello World, TextVitwDemoActivity!</string>
    <string name="say">Hello World, 欢迎观看《android教程》哈哈!</string>
    <string name="app_name">TextViewDemo</string>

</resources>

 

TextVitwDemoActivity.java:

package com.mhm.textView;

import android.app.Activity;
import android.os.Bundle;
import android.text.Html;
import android.widget.TextView;

public class TextVitwDemoActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView tv = (TextView)findViewById(R.id.tv);
        String text = tv.getText().toString();
        int tb = text.indexOf("《");
        int te = text.indexOf("》") + 1;
        String text_b = text.substring(0, tb);
        String text_m = text.substring(tb, te);
        String text_e = text.substring(te, text.length());
        tv.setText(Html.fromHtml(text_b + "<font color=red>" + text_m + "</font>" + text_e));
    }
}

 

 

 

 

也可以这样写:

package com.mhm.textView;

import android.R.color;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.text.Html;
import android.text.Spannable;
import android.text.SpannableStringBuilder;
import android.text.style.ForegroundColorSpan;
import android.widget.TextView;

public class TextVitwDemoActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView tv = (TextView)findViewById(R.id.tv);
        String text = tv.getText().toString();
        int tb = text.indexOf("《");
        int te = text.indexOf("》") + 1;
        SpannableStringBuilder style = new SpannableStringBuilder(text);
        style.setSpan(new ForegroundColorSpan(Color.GREEN), 0, tb, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        style.setSpan(new ForegroundColorSpan(Color.RED), tb, te, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        style.setSpan(new ForegroundColorSpan(Color.GREEN), te, text.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
        tv.setText(style);
    }
}

 这里有个奇怪的地方,int te = text.indexOf("》") + 1

+1必须写在这里,写在下面就不行。。。啥原因?

 

 

 

 

  • 大小: 13.5 KB
分享到:
评论

相关推荐

    Android 一个TextView中设置不同字体大小和颜色

    SpannableString是CharSequence的一个子类,允许我们在字符串的不同部分应用不同的格式,如颜色、字体大小、样式等。与普通的String相比,SpannableString提供了更多控制文本格式化的能力。 1. 创建SpannableString...

    Android 设置textview某段字体颜色或者背景

    SpannableString是Spannable的一个具体实现,它是一个不可变的字符串,我们可以向其中添加各种Span对象来改变文本的样式。例如,我们可以通过以下方式设置TextView中某段文字的颜色: ```java TextView textView =...

    安卓textView相关-android文字图片混排在一个TextView中显示文字穿插图片文字变色效果.rar

    TextView可以接受简单的HTML格式文本,通过`Html.fromHtml()`方法,我们可以将HTML字符串转换为Spanned对象,从而在TextView中显示富文本。例如,我们可以通过`&lt;img&gt;`标签插入图片,使用`&lt;font&gt;`标签改变文字颜色。 ...

    同一个textview,字体颜色不一样

    标题"同一个textview,字体颜色不一样"和描述"android中TextView分段显示不同颜色,字体,时间"所提到的问题,就是如何在一个`TextView`中实现文本分段样式。 首先,我们可以使用`SpannableString`和`Spanned`接口...

    016_android UI组件 之basicView- TextView

    首先,TextView是Android SDK中的一个核心组件,它继承自View类。它的主要功能是展示单行或多行文本,可以进行各种格式化处理,如设置字体、颜色、大小、对齐方式等。开发者可以通过XML布局文件或代码动态创建...

    TextView中,设置指定部分文字改变颜色,和指定部分文字点击事件

    `TextView`提供了`SpannableString`和`SpannableStringBuilder`类,它们可以用来创建具有不同属性的字符串,比如改变颜色、字体大小等。以下是如何使用它们来设置部分文字颜色: ```java // 创建一个可变的...

    (原创)代码动态改变某些textview文本颜色及其大小的方式

    `Color.parseColor()`函数接受一个颜色字符串,如`"#FF0000"`表示红色。 - 或者,如果你有颜色资源,可以使用`setTextColor(ContextCompat.getColor(context, R.color.your_color))`,这里的`R.color.your_color`是...

    通过字符串、颜色和尺寸资源改变文字及样式

    使用字符串资源的好处是可以统一管理应用中的所有文本,方便进行多语言支持,以及在后续的修改中只需在一个地方进行更改。例如,要在界面上显示“欢迎”这个文本,可以在strings.xml文件中定义一个名为`welcome_...

    安卓textView相关-Androidtextview文字中间加上图片.rar

    2. 在代码中,我们可以创建一个SpannableString,并使用ImageSpan将ImageView转换为可插入TextView的Span。 ```java ImageView imageView = findViewById(R.id.image_view); Drawable drawable = imageView....

    Android实现类似朋友圈评论的功能(TextView分段操作)

    1. 创建一个TextView,并设置其可编辑性为false,以防止用户直接修改评论内容。 2. 获取所有评论数据,包括用户名和评论内容,这些数据通常存储在数据库或网络服务器上。 3. 遍历评论数据,为每条评论创建一个...

    Android TextView工程文件

    TextView是Android SDK中的一个视图类,它允许开发者在界面上展示单行或多行文本。它可以格式化文本,支持字体大小、颜色、样式等的变化,还能处理链接和点击事件。在XML布局文件中,我们通常使用`&lt;android.widget....

    Android-MarkedView是一个用于显示markdown文档的AndroidTextViewer.

    `Android-MarkedView` 就是这样一个库,它是一个专门为Android平台设计的用于显示Markdown文档的TextView组件。 `MarkedView` 的主要功能是将Markdown源代码解析并渲染成美观的文本,提供类似网页浏览器的阅读体验...

    Android应用源码之4.TextView控件学习.zip

    在Android应用开发中,TextView是不可或缺的一个控件,它用于显示文本内容,广泛应用于各种界面元素,如标签、按钮、消息提示等。本资源“Android应用源码之4.TextView控件学习.zip”提供了关于TextView深入学习的...

    Android 排版TextView

    SpannableString可以让我们在字符串中选择性地应用属性,例如设置特定字符或单词的间距。而自定义Typeface则可以通过修改字体文件内部的字形间距来全局改变所有文本的字符间隔。 下面是一个简单的自定义TextView...

    bmi201740405211_desertxs2_BMI_android_安卓开发BMI_picturedt5_

    在本项目中,“bmi201740405211_desertxs2_BMI_android_安卓开发BMI_picturedt5_”是一个针对Android平台的BMI(Body Mass Index,身体质量指数)计算应用的开发实例。这个项目旨在教开发者如何在Android环境中创建...

    Android Button按钮及TextView实例介绍

    要创建一个Button,我们可以在XML布局文件中定义它,如下所示: ```xml android:id="@+id/my_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="点击我" /&gt; `...

    Android TextView设置不同的颜色字体

    总结起来,针对Android `TextView`设置不同颜色字体的需求,`SpannableStringBuilder`是一个既简单又高效的选择,它允许直接操作字符串并设置颜色,而无需额外的布局或HTML解析。同时,`Html.fromHtml()`方法在处理...

    解决android文本组件行首不能为标点问题

    2. **使用SpannableString**: SpannableString允许我们在字符串中设置不同的格式,包括文本样式、颜色、对齐方式等。通过设置Span,可以强制让标点符号出现在行首。例如,可以创建一个CharacterStyle的子类,然后...

    这是一个TextView 富文本示例

    SpannableString和SpannableStringBuilder是Android提供的两种富文本字符串对象。它们可以用来设置文本中的某一部分的样式,比如改变颜色、字体大小或添加下划线。通过创建这些对象并使用例如ForegroundColorSpan、...

    如何让TextView的人民币符号是¥(下面是两道杠)而不是一道杠

    `SpannableString`允许我们对字符串中的部分进行格式化。我们可以创建一个`CharacterStyle`子类,比如`UnderlineSpan`的派生类,并在其中自定义绘制两道杠。然后将其应用于"¥"字符。以下是大致步骤: - 创建自定义...

Global site tag (gtag.js) - Google Analytics