Android 开发第四讲 TextView的使用
一丶TextViw
1.1 TextView主要作用
TextView可以进行如下
- 文字大小,颜色设置,显示文字
- 显示不下文字的时候 使用 ....来进行省略
- 文件 icon 形式进行显示
- 中划线,下划线等 显示设置.
- 文字效果.
总结来说.文字显示控件支持的属性很多.需要编写Xml进行体会.
1.2 Xml设置Button按钮. java入口设置Button使用
Button后面会说.这里先贴出代码. 这里会响应Button点击.所以后续会说.
这里先做基本的.
Layout Activity_main.xml修改为如下
代码语言:javascript复制<?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">
<!-- 设置Button 并且设置ID-->
<Button
android:id="@ id/Btn_Text"
android:layout_width="match_parent"
android:text="点击我"
android:layout_height="wrap_content">
</Button>
</LinearLayout>
1.3 设置Button的响应事件
在Src中的 MainActivity中代码写入如下
代码语言:javascript复制package com.ibinary.myapplication;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.sax.StartElementListener;
import android.view.View;
import android.widget.Button;
// Alt Shift Entery 引入此包
public class MainActivity extends AppCompatActivity {
// 声明Button 一会使用 如果找不到则引入这个包 Alt Shift Enter
private Button m_BtnText;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 找到这个Button 使用 findBiewById 寻找R.id 下的我们定义的ID 但是返回值是view类型,
//所有我们要进行转换 转换为Button Button
m_BtnText = (Button) findViewById(R.id.Btn_Text);
// 响应 按钮点击消息 设置点击事件
// 匿名内部类
m_BtnText.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
//设置点击事件,跳转到 TextView 中. 所以我们要建立一个TextView的Active
//建立之后会产生一个 TextView 以及一个activity_text_view,并且我们需要在AndroidManifest.xml中注册
//从哪里 跳转到哪里
Intent intent = new Intent(MainActivity.this,TextViewActive.class);
startActivity(intent);
}
});
}
}
上述代码表示我们点击按钮的时候,跳转到TextViewActive中执行
但是这里我们没有创建.所以我们可以创建一个新的Active
如下
建立的空 Activity修改为 TextViewActive即可.
建立好之后会自动 在 AndroidMinifest.xml中注册.让我们使用.
然后也会自动在Layout下面创建一个activity_text_view.xml布局文件,当然名字在你创建Activity的时候
可以自己指定
二丶TextView Xml写法
2.1 TextView的常用属性的写法
TextView中的Text属性可以指定你要显示的名称.可以直接写,也可以引用另一个Xml文件中信息
在Android Studio中 Values下记录的这是一些信息.
比如strings.xml colors.xml等信息
代码语言:javascript复制android:textColor = "#000000" 可以设置字体的颜色
android:text="HelloWorld" 设置显示的文字,可以直接设置也可以引用设置
android:textSize="20sp" 可以设置字体大小. 字体大小因为屏幕原因使用sp表示.布局使用dp表示
android:maxLines="1" 设置为一行,不换行
android:ellipsize="end" 可以设置为过长不显示
xml编写为如下
strings.xml中如下
代码语言:javascript复制<resources>
<string name="app_name">My Application</string>
<string name="TestVie1">我是第一个TextView是被引用的</string>
</resources>
active_text_view.xml如下
代码语言:javascript复制<?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=".TextViewActive">
<!-- 引用方式显示 并且设置字体大小-->
<TextView
android:id="@ id/Text_ViewId1"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:textColor="#834e18"
android:textSize="20sp"
android:text="@string/TestVie1">
</TextView>
<!-- 直接写的显示-->
<TextView
android:id="@ id/Text_ViewId2"
android:layout_marginTop="10dp"
android:layout_width="wrap_content"
android:layout_height="20dp"
android:textColor="#00ff33"
android:text="我是不被引用的">
</TextView>
<!--设置TextView为不换行,以及显示为...表示-->
<TextView
android:layout_marginTop="20dp"
android:id="@ id/Text_ViewId3"
android:layout_width="60dp"
android:maxLines="1"
android:layout_height="20dp"
android:text="过长显示为省略号"
android:ellipsize="end"
android:textColor="#000033">
</TextView>
</LinearLayout>
效果图如下
2.2 TextView 显示为文字 图片的形式
如果想显示图片.那么我们就要找一个图片.并且放到 drawable中.然后进行引用
属性如下:
代码语言:javascript复制android:drawableRight = "@drawable/xxxx图片" 显示图片在文字的右边,同样有上边左边下边等
添加图片到drawable中.选中drawable直接Ctrl V粘贴即可.或者你自己选择图片路径
对应xml
代码语言:javascript复制<TextView
android:id="@ id/Text_View4"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:textSize="20sp"
android:layout_marginTop="20dp"
android:text="请看右边"
android:drawablePadding="3dp"
android:drawableRight="@drawable/down">
</TextView>
图片资源自己找. 效果图如下
2.3 TextView设置中划线以及下划线
要设置中划线 就要写代码进行设置了,不过我们要建立一个新的textview 并为其分配一个ID便于我们操作
写代码前两句还是一样
1.声明控件
2.找到控件,并强转.
只不过此时我们需要调用其中的方法了.而不是设置事件
在 TextViewActive下的代码如下
代码如下:
代码语言:javascript复制package com.ibinary.myapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.graphics.Paint;
import android.os.Bundle;
import android.widget.TextView;
public class TextViewActive extends AppCompatActivity {
//声明控件
private TextView m_TextViewId5;
private TextView m_TextViewId6;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_text_view);
//通过ID找到控件
m_TextViewId5 = (TextView) findViewById(R.id.Text_ViewId5);
m_TextViewId6 = (TextView) findViewById(R.id.Text_ViewId6);
//调用方法设置
//设置中划线,但是可能会有锯齿.所以调用去掉锯齿的方法
m_TextViewId5.getPaint().setFlags(Paint.STRIKE_THRU_TEXT_FLAG);
m_TextViewId5.getPaint().setAntiAlias(true);
//设置下划线 Paint.UNDERLINE_TEXT_FLAG
m_TextViewId6.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);
//第二种形式使我们可以从html中设置
m_TextViewId6.setText(Html.fromHtml("<u>Html形式</u>"));
}
}
active_view设置的xml描述如下
代码语言:javascript复制 <TextView
android:id="@ id/Text_ViewId5"
android:layout_width="wrap_content"
android:layout_height="100dp"
android:text="中划线"
android:layout_marginTop="20dp"
android:textSize="20sp">
</TextView>
点击按钮运行则会看到最终效果
点击之后则会跳转到TextView中
已经实现了中划线的效果
下划线如下
html如下
html需要了解 html标签以及语法等. 代码的话要使用 setText来设置.
2.4 跑马灯效果设置
跑马丁就是 文字循环显示
那么我们就要设置以下几个属性
代码语言:javascript复制android:singleLine="true" //设置为单行显示,不过被弃用了.后面可以百度看一下解决方法
android:ellipsize="marquee" // 显示条目设置
android:marqueeRepeatLimit="marquee_forever" //设置循环次数,marquee_forever代表一致循环
android:focusable="true" //设置焦点
android:focusableInTouchMode="true" //设置焦点模式
xml代码如下
代码语言:javascript复制 <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="30sp"
android:text="IBinary 博客园 IBinary 博客园 IBinary 博客园"
android:textColor="#9933ff"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:focusable="true"
android:focusableInTouchMode="true">
</TextView>
运行之后就会显示