TextView是最基本的文本显示控件。常见的基本属性和设置方法如下表:
XML中的属性 | TextView类的设置方法 | 说明 |
---|---|---|
text | setText | 设置文本内容 |
textColor | setTextColor | 设置文本颜色 |
textSize | setTextSize | 设置文本大小 |
textAppearance | setTextAppearance | 设置文本风格,风格定义在res/styles.xml |
gravity | setGravity | 设置文本的对齐方式 |
TextView的两个特效用法:
1、跑马灯效果
当一行的文本内容太多,导致无法全部显示,同时也不想分行展示,只能让文字从左向右滚动,类似于跑马灯。
跑马灯效果的实现需要在XML布局中添加额外的属性。
属性表:
XML中的属性 | 跑马灯用到的设置方法 | 说明 |
---|---|---|
singleLine | setSingleLine | 指定文本是否单行显示 |
ellipsize | setEllipsize | 指定文本超出范围后的显示方式,常见的省略方式见省略方式表 |
focusable | setFocusable | 指定是否获得焦点,跑马灯的要求是设置为true |
focusableInTouchMode | setFocusableInTouchMode | 指定在触摸时是否获得焦点,跑马灯的要求是设置为true |
省略方式表:
XML中的省略方式 | TruncateAt类中省略方式 | 说明 |
---|---|---|
start | START | 省略号在开头 |
middle | MIDDLE | 省略号在中间 |
end | END | 省略号在末尾 |
marquee | MARQUEE | 跑马灯显示 |
具体的实现代码示例:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<!--一个普通的文本视图-->
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跑马灯效果,点击暂停,再点击恢复"
android:gravity="center"
android:layout_marginTop="20dp"
/>
<!--跑马灯视图-->
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:layout_marginTop="20dp"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:textSize="17sp"
android:textColor="#000000"
android:text="旗下拥有:专业的中文IT技术社区: 优快云.NET;移动端开发者
专属APP: 优快云 APP、优快云学院APP;新媒体矩阵微信公众号:优快云资讯、程序人生、
GitChat、优快云学院、AI科技大本营、
区块链大本营、优快云云计算、
GitChat精品课、
人工智能头条、优快云企业招聘;IT技术培训学习平台: 优快云学院;
技术知识移动社区: GitChat;人工智能新社区: TinyMind;
权威IT技术内容平台:《程序员》+ GitChat;IT人力资源服务:科锐福克斯;
IT技术管理者平台:CTO俱乐部。"
/>
</LinearLayout>
2、聊天室或者文字直播间效果
聊天室的窗口是固定的,新的文字消息总是加入窗口末尾,同时窗口内部的文字整体向上移动,窗口的大小、位置保持不变。
在XML布局中需要指定额外的属性。这些特殊属性及其设置方法见下表:
XML中的属性 | 聊天室用到的设置方法 | 说明 |
---|---|---|
gravity | SetGravity | 指定文本的对齐方式,取值left |
lines | setLines | 指定文本的行数 |
maxLines | setMaxLines | 指定文本的最大行数 |
scrollbars | 无 | 指定滚动条的方向,取值vertical,如果不指定将不显示滚动条 |
无 | setMovementMethod | 设置文本的移动方式,可设置ScrollingMovementMethod,如果不移动将无法拉动文档 |
具体的实例代码
java逻辑处理代码:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.text.method.ScrollingMovementMethod;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity
implements View.OnClickListener,View.OnLongClickListener {
private TextView tv_bbs;
private TextView tv_control;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv_control=findViewById(R.id.tv_control);
tv_control.setOnClickListener(this);
tv_control.setOnLongClickListener(this);
tv_bbs=findViewById(R.id.tv_bbs);
tv_bbs.setOnClickListener(this);
tv_bbs.setOnLongClickListener(this);
tv_bbs.setGravity(Gravity.LEFT|Gravity.BOTTOM);
tv_bbs.setLines(8);
tv_bbs.setMaxLines(8);
tv_bbs.setMovementMethod(new ScrollingMovementMethod());
}
private String[] mChatStr={
"百度拥有数万名研发工程师",
"这是中国乃至全球都顶尖的技术团队",
"这支队伍掌握着世界上最为先进的搜索引擎技术",
"使百度成为中国掌握世界尖端科学核心技术的中国高科技企业",
"也使中国成为美国、俄罗斯、和韩国之外,全球仅有的4个拥有搜索引擎核心技术的国家之一"
};
@Override
public void onClick(View v) {
if (v.getId() == R.id.tv_control || v.getId() == R.id.tv_bbs) {
int random = (int)(Math.random()*10) % 5;
String newStr = String.format("%s\n%s %s",
tv_bbs.getText().toString(),System.currentTimeMillis(), mChatStr[random]);
tv_bbs.setText(newStr);
}
}
@Override
public boolean onLongClick(View v) {
if (v.getId() == R.id.tv_control || v.getId() == R.id.tv_bbs) {
tv_bbs.setText("");
}
return true;
}
}
XML视图代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:id="@+id/tv_control"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center"
android:text="聊天室效果,点击添加聊天记录,长按删除聊天记录"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="200dp"
android:orientation="vertical">
<TextView
android:id="@+id/tv_bbs"
android:layout_width="match_parent"
android:layout_height="200dp"
android:layout_marginTop="20dp"
android:scrollbars="vertical"
android:textColor="#000000"
android:textSize="17sp"
/>
</LinearLayout>
</LinearLayout>