现在的位置: 首页 > 综合 > 正文

【Android 开发】:TextView的几种使用方法

2013年02月11日 ⁄ 综合 ⁄ 共 4309字 ⁄ 字号 评论关闭

1. TextView简介

TextView主要是在android中实现文字说明等功能。主要实现功能如下:

1. 显示丰富的文本(URL、字体大小、颜色等): 在TextView中预定了一些类似HTML的标签,通过标签可以使TextView控件显得不懂颜色、大小、字体的文字。

<font>:设置颜色和字体

<big>:设置大小号

<small>:设置小号

<i>\<b>:斜体、粗体

<a>:链接地址

<img>:插入图片

2. 使用这些标签可以用Html.fromHtml方法将这些标签的字符串转换成Charsequenece对象,然后在TextView中进行设置。如果想在显示的文本中将URL地址、邮箱地址、电话产生超链接的效果可以使用android:autoLink来设置。

该属性如下:

2. 实战案例

1). 如何显示文本(URL、不同大小、字体、颜色的文本)

1. 主要代码

    //添加一段html的标志
        String html = "<font color = 'red>I love android</font><br>";
        html += "<font color='#0000ff'><big><i>I love android</i></big></font><p>";
        html += "<big><a href='http://www.baidu.com'>百度</a></big>";
        CharSequence charSequence = Html.fromHtml(html);
        textView1.setText(charSequence);
        textView1.setMovementMethod(LinkMovementMethod.getInstance());  //点击的时候产生超链接
        
        String text = "我的URL: http://www.sina.com\n";
        text+="我的email: abcd@126.com\n";
        text+="我的电话: + 86 010-1234567";
        textView2.setText(text);
        textView2.setMovementMethod(LinkMovementMethod.getInstance());

2. 程序执行结果

2). 在TextView中显示表情图像和文本

1. 主要代码

 ...
public class TextDemo2 extends Activity {

    private TextView textView;

    public int getResourceId(String name) {

        try {
            // 根据资源的ID的变量名获得Field的对象,使用反射机制来实现
            Field field = R.drawable.class.getField(name);
            // 取得并返回资源的id的字段(静态变量)的值,使用反射机制
            return Integer.parseInt(field.get(null).toString());
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return 0;
    }

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        initComponent();
        textView.setTextColor(Color.BLACK);
        textView.setBackgroundColor(Color.WHITE);
        textView.setTextSize(20);
        String html = "图像1<img src = 'image1'>图像2<img src = 'image2'>图像3<img src = 'image3'><p>"; // <p>
                                                                                                  // :
                                                                                                  // 表示段落符
        html += "图像4<a href = 'http://www.baidu.com'><img src = 'image4'></a>图像5<img src = 'image5'>";

        /*
         * 查看Html类的fromHtml()方法,从提供的html的文本返回显示成文本类型 public static Spanned
         * fromHtml (String source, Html.ImageGetter imageGetter,
         * Html.TagHandler tagHandler)
         */

        CharSequence charSequence = Html.fromHtml(html, new ImageGetter() {

            @Override
            public Drawable getDrawable(String source) {
                // TODO Auto-generated method stub

                // 获得系统资源的信息,比如图片信息
                Drawable drawable = getResources().getDrawable(getResourceId(source));
                if (source.equals("image3")) {
                    drawable.setBounds(0, 0, drawable.getIntrinsicHeight() / 2,
                            drawable.getIntrinsicHeight() / 2);
                } else {
                    drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
                            drawable.getIntrinsicHeight());
                }
                return drawable;
            }
        }, null);
        textView.setText(charSequence);
        textView.setMovementMethod(LinkMovementMethod.getInstance());

    }

    private void initComponent() {
        textView = (TextView) this.findViewById(R.id.textview);

    }
}

2. 程序执行结果

<-点击第四个图像连接到"百度"的主页->

3). 单击链接弹出Activity

1. 主要代码

        String text1 = "显示Activity1";
        String text2 = "显示Activity2";
        
    //主要是用来拆分字符串
        SpannableString spannableString = new SpannableString(text1);
        SpannableString spannableString2 = new SpannableString(text2);
        
    /*
     * 查看文档setSpan()方法
     * public void setSpan (Object what, int start, int end, int flags)
     * 表示点击Text的触发范围是 start字符开始到end字符结束
     */
        
        spannableString.setSpan(new ClickableSpan() {
            
            @Override
            public void onClick(View widget) {
                Intent intent = new Intent(TextDemo3.this, Other.class);
                startActivity(intent);
            }
        }, 0, text1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        
        spannableString2.setSpan(new ClickableSpan() {
            
            @Override
            public void onClick(View widget) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(TextDemo3.this, Other.class);
                startActivity(intent);
            }
        }, 0, text2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        
        textView1.setText(spannableString);
        textView2.setText(spannableString2);
        textView1.setMovementMethod(LinkMovementMethod.getInstance());
        textView2.setMovementMethod(LinkMovementMethod.getInstance());

2. 程序执行结果

<-点击连接到另外一个Activity->

4). 用TextView实现跑马灯效果

1. 主要代码

        String html = "<a href = 'http://www.163.com'>网易</a>科技讯 5月25日消息,据国外媒体报道,消息人士称,雅虎已经正式向新闻集团(News Corp)和沃尔特·迪斯尼公司拥有的视频服务Hulu提交收购要约。";
        
        CharSequence charSequence = Html.fromHtml(html);
        textView.setText(charSequence);
        textView.setMovementMethod(LinkMovementMethod.getInstance());

TextView 属性[关键]

    <TextView
        android:id="@+id/textview"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:singleLine="true"
        android:ellipsize="marquee"
        android:marqueeRepeatLimit="marquee_forever"
        android:focusable="true"
        android:focusableInTouchMode="true"
        android:background="#FFFFFF"
        android:textColor="#000"
        android:textSize="20dp"
        android:layout_margin="10dp"
        android:padding="10dp" />

[注意]这几个属性是关键的属性:singleLine 、ellipsize 、marqueeRepeatLimit 、focusable、focusableInTouchMode

2. 程序执行结果

<-点击"网易"连接到网易主界面->


抱歉!评论已关闭.