Android TextView 与 EditText 的区别与使用

简介: Android TextView 与 EditText 的区别与使用

一、简介

  • TextView 继承 View,作用就是在界面上显示文本(类似于 iOS 中的 UILabel),同时它还是 EditTextButton 两个 UI 组件类的父类。
  • 另外 Android 关闭了它的文字编辑功能,如果想编辑内容,则可以使用 EditText

二、TextView

  • TextView 常用属性
属性 含义
id TextView 设置一个组件 id,根据 id,可以在 Java 代码中通过findViewById() 的方法获取到该对象,然后进行相关属性的设置。
layout_width 组件宽度
layout_height 组件高度
text 设置显示的文本内容,通常是把字符串写到 res/values/strings.xml 文件中, 然后通过 @string/xxx 取得对应的字符串内容。
textSize 字体大小,单位一般是用 sp
textColor 设置字体颜色,同上,通过 res/values/colors.xml 资源来引用(使用:@color/xxx
textStyle 设置字体风格,三个可选值: normal(无效果)、bold(加粗)、 italic(斜体)。
autoLink 识别链接类型:webemailphonemapnoneall
lines 最大行数
minLines 最小行数
ellipsize 内容超出的时候,省略显示方式。start:省略号在开头 "...dzm"end:省略号在结尾 "dzm..."middle:省略号在中间 "dzm...xyq"marquee:跑马灯(实现跑马灯,必须让该控件获得焦点)
gravity 设置组件中内容的对齐方向,TextView 中是文字,ImageView 中是图片等等,它可以控制内容在组件中多个方位对齐内容:上下左右中
textAlignment 设置组件中内容的对齐方向,只能 居中居左居右
background 控件的背景颜色,可以理解为填充整个控件的颜色,可以是图片。
shadowColor 阴影颜色
shadowDx 阴影 x 方向位移
shadowDy 阴影 y 方向位移
shadowRadius 阴影的半径,也可以算作是模糊度。

  • 案例代码
<!-- TextView -->
<TextView
    android:id="@+id/dzm"
    android:layout_width="300dp"
    android:layout_height="300dp"
    android:text="@string/app_name"
    android:textSize="50sp"
    android:textColor="#f11"
    android:textStyle="bold"
    android:autoLink="email"
    android:lines="2"
    android:minLines="2"
    android:ellipsize="start"
    android:gravity="top"
    android:textAlignment="textEnd"
    android:background="@drawable/shape_text"
    android:shadowColor="#cff"
    android:shadowDx="0"
    android:shadowDy="50"
    android:shadowRadius="20"
    tools:ignore="RtlCompat" />

三、EditText

  • EditText 特有属性,同时支持上面 TextView 属性使用。
属性 含义
hint 默认提示文本
textColorHint 默认提示文本颜色
textColorHighlight 被选中文字的底色,默认为蓝色
selectAllOnFocus 布尔值,点击输入框获得焦点后,获取到输入框中所有的文本内容。
inputType 键盘类型,对输入的数据进行限制。
minLines 最小行数
maxLines 最大行数
singleLine 设置单行输入,一旦设置为 true,则文字不会自动换行。
textScaleX 控制字与字之间的间距
capitalize sentences:仅第一个字母大写。words:每一个单词首字母大小,用空格区分单词。characters:每一个英文字母都大写。
numeric 设置只能输入整数,如果是小数则是:decimal
gray=“top” 多行中指针在第一行第一位置
typeface 设置字型 normalsansserifmonospace
autoText 自动拼写帮助
freezesText 设置保存文本的内容以及光标的位置
inputMethod 为文本指定输入法,需要完全限定名(完整的包名) eg:com.huwei.xxxim
textCursorDrawable 设置光标颜色
et.setSelection(et.length()) 设置调整光标位置到最后一行
et.requestFocus() 请求获取焦点,低版本会自动弹出键盘,稍微高点的版本则需要手动去弹出键盘
et.clearFocus() 清除焦点

  • 案例代码
// 获取到编辑框
EditText et = (EditText)findViewById(R.id.dzm);
// 获取焦点
et.requestFocus();
// 设置光标位置
et.setSelection(2);

相关文章
|
4月前
Android.mk(makefile)中几个符号的区别:=、 :=、 ?=、 +=
本文解释了在Android.mk文件中使用的几种赋值符号的区别,包括`=`(基本赋值)、`:=`(覆盖赋值)、`?=`(条件赋值,仅在变量未赋值时操作)、`+=`(追加赋值),并通过实验演示了这些符号的具体行为和效果。
242 1
|
3月前
|
Android开发 Kotlin
Android经典面试题之Kotlin的==和===有什么区别?
本文介绍了 Kotlin 中 `==` 和 `===` 操作符的区别:`==` 用于比较值是否相等,而 `===` 用于检查对象身份。对于基本类型,两者行为相似;对于对象引用,`==` 比较值相等性,`===` 检查引用是否指向同一实例。此外,还列举了其他常用比较操作符及其应用场景。
196 93
|
2月前
|
XML 存储 Java
浅谈Android的TextView控件
浅谈Android的TextView控件
46 0
|
3月前
|
Android开发
Android经典实战之Textview文字设置不同颜色、下划线、加粗、超链接等效果
本文介绍了 `SpannableString` 在 Android 开发中的强大功能,包括如何在单个字符串中应用多种样式,如颜色、字体大小、风格等,并提供了详细代码示例,展示如何设置文本颜色、添加点击事件等,助你实现丰富文本效果。
310 3
|
5月前
|
安全 Android开发 Kotlin
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?
**Kotlin中的`by lazy`和`lateinit`都是延迟初始化技术。`by lazy`用于只读属性,线程安全,首次访问时初始化;`lateinit`用于可变属性,需手动初始化,非线程安全。`by lazy`支持线程安全模式选择,而`lateinit`适用于构造函数后初始化。选择依赖于属性特性和使用场景。**
180 5
Android经典面试题之Kotlin延迟初始化的by lazy和lateinit有什么区别?
|
5月前
|
Android开发 开发者
Android经典面试题之SurfaceView和TextureView有什么区别?
分享了`SurfaceView`和`TextureView`在Android中的角色。`SurfaceView`适于视频/游戏,独立窗口低延迟,但变换受限;`TextureView`支持复杂变换,视图层级中渲染,适合动画/视频特效,但性能略低。两者在性能、变换、使用和层级上有差异,开发者需按需选择。
104 1
|
5月前
|
SQL Java Unix
Android经典面试题之Java中获取时间戳的方式有哪些?有什么区别?
在Java中获取时间戳有多种方式,包括`System.currentTimeMillis()`(毫秒级,适用于日志和计时)、`System.nanoTime()`(纳秒级,高精度计时)、`Instant.now().toEpochMilli()`(毫秒级,ISO-8601标准)和`Instant.now().getEpochSecond()`(秒级)。`Timestamp.valueOf(LocalDateTime.now()).getTime()`适用于数据库操作。选择方法取决于精度、用途和时间起点的需求。
75 3
|
5月前
|
Android开发
Android面试题之View的invalidate方法和postInvalidate方法有什么区别
本文探讨了Android自定义View中`invalidate()`和`postInvalidate()`的区别。`invalidate()`在UI线程中刷新View,而`postInvalidate()`用于非UI线程,通过消息机制切换到UI线程执行`invalidate()`。源码分析显示,`postInvalidate()`最终调用`ViewRootImpl`的`dispatchInvalidateDelayed`,通过Handler发送消息到UI线程执行刷新。
64 1
|
5月前
|
消息中间件 调度 Android开发
Android经典面试题之View的post方法和Handler的post方法有什么区别?
本文对比了Android开发中`View.post`与`Handler.post`的使用。`View.post`将任务加入视图关联的消息队列,在视图布局后执行,适合视图操作。`Handler.post`更通用,可调度至特定Handler的线程,不仅限于视图任务。选择方法取决于具体需求和上下文。
63 0
|
5月前
|
Android开发 Kotlin
Android经典面试题之Kotlin中Lambda表达式和匿名函数的区别
**Kotlin中的匿名函数与Lambda表达式概述:** 匿名函数(`fun`关键字,明确返回类型,支持非局部返回)适合复杂逻辑,而Lambda(简洁语法,类型推断)常用于内联操作和高阶函数参数。两者在语法、返回类型和使用场景上有所区别,但都提供无名函数的能力。
38 0