Android UI基础——TextView控件

TextView作用很简单,就是在界面上显示文本。
TextView直接继承了View,它是Button、EditText的父类。作用就是在界面上显示文本。TextView提供了大量的xml属性,这些属性大部分不仅可适用于TextView,也可以使用其子类。

接下来对其属性进行具体的描述:

1、文字属性的编辑:

设置这些属性的时候有两种表示方法:第一种可以在layout的布局文件中进行设置,第二种可以在Activity的onCreate()方法中进行设置。

属性 layout中的设置 Activity中的设置
显示内容 android:text=”“ setText()
字体颜色 android:textColor=”“ setTextColor(Color.rgb( , , ,))
更改大小 android:textSize=”“ setTextSize()

(1)在layout布局xml 文件设置:

<TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这是一个TextView文本"
        android:textColor="#000000"
        android:textSize="20dp"
        />

(2)在Activity中设置

//设置文字大小 ,大小只能传像素值
        textView.setTextSize(30);
//设置颜色,三种方式。
        textView.setTextColor(0xff00ff00);
        textView.setTextColor(Color.BLUE);
        textView.setTextColor(Color.argb(0x99, 0xff, 0x00, 0x00));
// 通过values中的color中设置的颜色来设定。
        int color = getResources().getColor(R.color.red);
        textView.setTextColor(color);

2、超链接

该属性同样可以在layout布局和Activity中设置。
(1)在layout布局xml 文件设置:
链接设置可以设置为:all, map, none, email, phone以及web。此处以phone为例:

<TextView
          android:id="@+id/textView"
          android:layout_width="wrap_content"
          android:layout_height="wrap_content"
          android:text="电话号码:18189536898"
          android:autoLink="phone"/>

(2)在Activity中设置(在onCreate()方法中设置)

   textView.setAutoLinkMask(Linkify.ALL);
   textView.setText("电话号码:18189536898");

效果如图(点击可以拨出号码):
这里写图片描述

3、文本行数

android:lines=”“:设置文本的行数,如果设置为1,就说明只有一行可以输入文字,如果文字多出的话,多余的文字会出屏。
android: maxLines=”“:设置文本的最大行数,写的行数少于最大行数只显示写有文本的行,如果多于设置的行数,多余的文字出屏。

4、添加图片

在TextView中可以添加图片,也可以调整图片的位置。

 android:drawableTop="@mipmap/ic_launcher"

此例是将图片添加到文字的上方,效果图如下:
这里写图片描述

5、省略显示文本

省略显示文本一般使用在文本过多而不需要全部显示或者需要文本滚动显示效果的时候。
在TextView中可以设置 android:ellipsize属性,有四个属性值:marquee(滚动显示),end(末尾显示······),middle(中间显示······),none(不显示省略号,多余自动不显示)。
但是滚动显示“marquee”还需要设置焦点,代码如下:

android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:singleLine="true"

效果图如下:
这里写图片描述

6、富文本

富文本就是一些特殊的文字或者带图片的特殊显示,比如qq聊天中带表情的文字对话就是富文本。代码如下:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textView = (TextView) findViewById(R.id.text);
        button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String html2 = "你好<img src='header'></img>,我也是有图<img src='ic_launcher'></img>的<font color='#E61A5F'>文本</font>";
                Spanned spanned1 = Html.fromHtml(html2, new Html.ImageGetter() {
                    @Override
                    public Drawable getDrawable(String source) {
                        Drawable drawable = null;
                        //反射机制
                        Class clazz = R.mipmap.class;
                        try {
                            Field field = clazz.getDeclaredField(source);
                            int id = field.getInt(null);
                            drawable = getResources().getDrawable(id);
                            drawable.setBounds(0,0,drawable.getMinimumWidth(),drawable.getMinimumHeight());
                        } catch (NoSuchFieldException e) {
                            e.printStackTrace();
                        } catch (IllegalAccessException e) {
                            e.printStackTrace();
                        }
                        return drawable;
                    }
                },null);
                textView.setText(spanned1);
            }
        });
    }

}

效果如下:
这里写图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章