android中textview显示文字比如: 标题:XXXX 后面的XXXX怎么获取?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android中textview显示文字比如: 标题:XXXX 后面的XXXX怎么获取?相关的知识,希望对你有一定的参考价值。

TextView是最常用的组件之一用于显示文本

像这种需求通常是两个TextView组成的解决方案

    用两个TextView 一个作为标题,一个作为动态内容

    还是用一个TexeView 直接getText().toString() 得到文本再调用String的api split(":") 拆分,即通过:进行拆分

通常在android中都是用两个TextVew来处理的,前面一个TextVew作为标题,是固定不变的,后面一个TextVew作为变量,动态显示内容


获取textView文本的api : 

String txt = textView.getText().toString();

参考技术A TextView tv = (TextView)findViewById(...);
String text = tv.getText().toString();
String spTitle = text.substring(title.indexOf(":")+1);
这个spTitle就是你要获取的东东!
参考技术B String title = textView.getText();
int i = title.indexof(":");
String s = title.substring(i+1, s.length());追问

问的有问题:标题是一个textview 后面的内容(XXXX)是一个textview , XXXX是从数据库中读取出来显示的, 怎么才能获取XXXX的内容

追答

你要问的是数据库操作? 怎么从数据库取出来?

追问

通过web 比如说:一张照片 标题 : 123; 地点 : 456 内容: 789 ;标题 地点 内容 和 123 456 789 都是textView 从数据库中读取数据 若没有"地点" 则地点这项就不用显示...

本回答被提问者采纳
参考技术C 反正我是看不明白你想问什么。 参考技术D 从数据库中取

修改TextView中部分文本的字体及颜色

在Android应用开发中使用TextView控件展示一些文字内容时可能会遇到一些特别的需求,比如希望用特殊的字体或颜色标示出一段文字中的某些文字,一般开发者很容易想到用多个TextView控件把具有不同显示样式的文字拼接起来,这样能够实现,但是相对比较麻烦一些,而且扩展性和显示效果都不一定很好。本文是结合我在实际工作中遇到的需求的解决办法和我对这个问题的一点调查总结形成的博文,以备以后查阅。
实现方法

要实现一段文字中部分文字内容的字体大小颜色与众不同的需求,一般有三种实现方式:
1、使用多个TextView拼接
2、使用html标签定义文字内容,用Html.fromHtml()方法解析后设置给TextView控件
3、使用Spannable对象动态设置文字的大小和颜色

使用多个TextView控件来依次拼接具有不同属性的文字,这种方法没有什么特别的,只需要正确地设置TextView的各种属性就可以实现需求。下面分别说说Html标签和Spannable的使用。
Html标签设置字体大小、颜色

Android SDK中提供了一个Html类用来解析HTML格式的字符串用于显示,所以可以通过Html标签来设置文字的显示属性,不过这个Html类并不支持所有的Html标签。

/**
 * This class processes HTML strings into displayable styled text.
 * Not all HTML tags are supported.
 */
public class Html 
    ……
    /**
     * Returns displayable styled text from the provided HTML string.
     * Any <img> tags in the HTML will display as a generic
     * replacement image which your program can then go through and
     * replace with real images.
     *
     * <p>This uses TagSoup to handle real HTML, including all of the
     * brokenness found in the wild.
     */
    public static Spanned fromHtml(String source) 
        return fromHtml(source, null, null);
    

    /**
     * Returns displayable styled text from the provided HTML string.
     * Any <img> tags in the HTML will use the specified ImageGetter
     * to request a representation of the image (use null if you don't
     * want this) and the specified TagHandler to handle unknown tags
     * (specify null if you don't want this).
     *
     * <p>This uses TagSoup to handle real HTML, including all of the 
     * brokenness found in the wild.
     */
    public static Spanned fromHtml(String source, ImageGetter imageGetter,
                                   TagHandler tagHandler) 
        //implementation code
    
    ……


代码示例

TextView textView = (TextView) findViewById(R.id.text_for_test);
String textSource = "修改TextView中部分文字的<font color='#ff0000'><big>大</big><small>小</small></font>和<font color='#00ff00'>颜色</font>,展示多彩效果!";
textView.setText(Html.fromHtml(textSource));

   <string name="text">客户名称 <font color='#ff0000'>*</font></string>

显示效果如下

我们也可以把要显示的文本加到strings.xml文件里面,不过我们需要注意对<、>、'、"这些字符进行转换,因为它们四个是HTML的标签,放到xml文件中需要对其进行转义。具体来说,左括号< 要用 < 代替,右括号> 要用 > 代替,单引号和双引号要用 \\ 进行转义。

在strings.xml中定义文字内容:

<string name="partly_colored_text">修改TextView中部分文字的<font color=\\'#ff0000\\'> <big></big> <small></small> </font><font color=\\'#00ff00\\'>颜色</font>,展示多彩效果!</string>

在Java代码中调用:

textView.setText(Html.fromHtml(getString(R.string.partly_colored_text)));

两种实现方式效果一样,同上图片。
Spannable

Spannable是android.text包下的一个关于文字样式处理的接口类,可以给文字添加或者去除一些显示样式,有三个类实现了Spannable,其中Editable也是一个接口,由SpannableStringBuilder最终实现,Spannable本身实现了Spanned接口,在Android SDK中的类结构关系如下图。

Spannable接口继承了Spanned接口,而后者又继承了CharSequence接口,所以通过实例化Spannable对象我们可以为一个字符串添加各种显示样式,可添加的字符样式包括抽象类CharacterStyle的各个可实例化子类提供的样式。

CharacterStyle
public abstract class CharacterStyle
extends Object
java.lang.Object
android.text.style.CharacterStyle
Known Direct Subclasses BackgroundColorSpan, ClickableSpan, ForegroundColorSpan, MaskFilterSpan, MetricAffectingSpan, RasterizerSpan, StrikethroughSpan,SuggestionSpan, UnderlineSpan
Known Indirect Subclasses AbsoluteSizeSpan, DynamicDrawableSpan, ImageSpan, LocaleSpan, RelativeSizeSpan, ReplacementSpan, ScaleXSpan, StyleSpan, SubscriptSpan,SuperscriptSpan, TextAppearanceSpan, TypefaceSpan, URLSpan

实例化SpannableString对象并通过它的方法setSpan(Object what, int start, int end, int flags)便可以构造带有我们需要的显示样式的Spanned对象,然后将这个对象传入TextView的setText方法即可让目标字符串显示为设置的样式。这里setSpan方法中what就是SDK中提供的各种CharacterStyle对象;start和end是设置这个样式针对的textview中的字符起止位置;flags是Spanned类中定义的几种标志,用来表示是否要将前面设置的起点或终点位置设置成what标示的样式。这些flags大概的意思如下

Spanned.SPAN_EXCLUSIVE_EXCLUSIVE (前后都不包括)
Spanned.SPAN_INCLUSIVE_EXCLUSIVE (前面包括,后面不包括)
Spanned.SPAN_EXCLUSIVE_INCLUSIVE (前面不包括,后面包括)
Spanned.SPAN_INCLUSIVE_INCLUSIVE (前后都包括)

小结

灵活应用Spannable可以实现非常多酷炫的TextView显示效果,本文没有写代码演示各种TextView样式的效果,下面最后一个链接的文章给出了一些效果的用法示例,非常不错,参考之;第二个链接地址中作者给出了一个使用Spannable的工具类,挺方便实用的。
Thanks To

给TextView加上多彩效果:改变部分字体的大小和颜色
TextView的一些高级应用(自定义字体、显示多种颜色、添加阴影)
通过Spannable对象设置textview的样式

以上是关于android中textview显示文字比如: 标题:XXXX 后面的XXXX怎么获取?的主要内容,如果未能解决你的问题,请参考以下文章

怎么能让TextView的文本显示一行

一起Talk Android吧(第三百零二回:TextView显示长文字)

Android 怎么旋转TextView文字显示方向

如何在android中实现TextView中的文字逐一显示

如何在android中实现TextView中的文字逐一显示

TextView简单学习