TextView带你深入了解你可能不知道的用法

1.在textview的周围添加图片
android:drawableBottom:在text的下方输出一个drawable,可以是图片,样式,颜色等。其他举一反三
android:drawableLeft
android:drawableRight
android:drawableTop
android:drawableStart
android:drawableEnd
android:drawablePadding:设置text与drawable的间距,是与drawableLeft、 drawableRight、drawableTop、drawableBottom一起使用。

2.autoSizeMaxTextSize和autoSizeTextType
autoSizeMaxTextSize:最大字体大小
autoSizeTextType:textSize的大小会根据textView的宽高自动适配

  1. 在Android 8.0 (API level 26) 以上,才可以使用这个属性,不过通过拓展库可以最低支持到Android 4.0(API Level 14)及以上的系统(不过你的应用编译的targetSDKVersion必须在26及以上)。

  2. 在使用autoSizeTextType属性的时候宽高属性最好是固定的参数,或者设置maxHeight和maxWidth限制一下控件的宽高

  3. 如果只设置了autoSizeTextType属性的话,默认的textSize是12sp~112sp,粒度为1px

android:autoSizeMaxTextSize="???sp"
android:autoSizeTextType=“uniform”
如果想让TextView自动扩大尺寸以充分填满TextView,则将autoSizeTextType设置为"uniform"(autoSizeTextType只有"uniform"和"none"两种可取值),并且将最大允许尺寸(属性autoSizeMaxTextSize)设置为“你设置的值”sp
uniform:统一的水平和垂直文本大小缩放以适应容器。
none:没有自动调整大小(默认)
android:autoSizeMinTextSize="???sp"
android:autoSizeTextType=“uniform”
当文本很长,但又想自动缩小字体尺寸,以在TextView内单行全部显示时
总结: 让文本尽可能占满控件(文本太长时自动减小字体尺寸,而文本短时则自动增大字体尺寸)

autoSizeStepGranularity属性取值为字体尺寸,如"1sp"、"2sp"等,指定Android在搜索最佳字体尺寸时的迭代步长。

autotoSizePresetSizes则指定了所有尺寸的候选值,是数组类型,需要先在values/arrays.xml里定义一个数组,如下例:

<?xml version="1.0" encoding="utf-8"?> 12sp 16sp

然后autoSizePresetSizes属性引用这个数组:

<TextView

android:autoSizePresetSizes="@array/sizes" />

autotoSizePresetSizes的优先级高于autoSizeStepGranularity(即同时设置了autotoSizePresetSizes和autoSizeStepGranularity,则autoSizeStepGranularity的值将被忽略)。

4.shadowDX、shadowDy、shadowRadius
TextView的XML属性中关于阴影的几条属性

shadowDX、shadowDy、shadowRadius,分别是阴影的横、纵坐标偏移,以及阴影的半径,这个自己用一下就理解了。

5.android:autoLink
控制是否自动找到 url 和电子邮件地址等链接并将其转换为可点击的链接。默认值为"none",禁用此功能。

必须是以下常量值中的一个或多个(以"|"分隔)。

Constant Value Description

all f 匹配所有模式(相当于 web|email|phone|map)。

email 2 匹配电子邮件地址。

map 8 匹配地图地址。弃用

none 0 不匹配任何模式(默认)。

phone 4 匹配电话号码。

web 1 匹配 Web URL。

相关方法:setAutoLinkMask(int)
6. maxLength最多显示几行,单行也可用android:singleline=“true”
7.ellipsize,内容显示不下时,显示…(位置最前、中间、最后都可以),这里要加行数限制才行
7. lineSpacingMultiplier 行距
8. android:background="@drawable/可以设置shape" 设置背景
9. shape
shape不是textview的,但经常用于设置为textview的背景

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <!--radius四个圆角统一设置,也可以单独对某一个圆角设置。例:topLeftRadius-->
    <corners android:radius="8dp"/>
    <!--边框宽度width、颜色color-->
    <stroke android:width="1dp" android:color="@color/color_ff0000" />
    <!--渐变的颜色设置开始到结束-->
    <gradient
        android:startColor="@color/color_188FFF"
        android:centerColor="@color/color_FF773D"
        android:endColor="@color/color_ff0000"
        android:type="linear"
        />
</shape>

10.allowUndo

是否应允许对可编辑文本进行撤消。默认为真。

可以是布尔值,例如 “true"或"false”。
11.autoText

如果设置,则指定此 TextView 具有文本输入法并自动更正一些常见的拼写错误。默认值为"假"。
12.capitalize

如果设置,则指定此 TextView 具有文本输入法并应自动将用户键入的内容大写。默认值为"无"。

characters 3 大写每个字符。

none 0 不自动大写。

sentences 1 将每个句子的第一个单词大写。

words 2 将每个单词的第一个字母大写。

13.cursorVisible

使光标可见(默认)或不可见。

14.digits

如果设置,则指定此 TextView 具有数字输入法,并且这些特定字符是它将接受的字符。如果设置了此项,则暗示数字为真。默认值为假。
15.editable

如果设置,则指定此 TextView 具有输入法。除非另有说明,否则它将是文本文件。对于 TextView,默认为 false。对于 EditText,默认为 true。
16.elegantTextHeight

优雅的文本高度,特别是对于不太紧凑的复杂脚本文本。可以是一个布尔值,例如 “true"或"false”。
17.ellipsize

如果设置,会导致长于视图宽度的单词被椭圆化而不是在中间断开。您通常还希望设置 scrollHorizo​​ntally 或 singleLine,以便将整个文本也限制在一行中,而不是仍然允许分成多行。
18.ems

使TextView正好有这么多em宽。可以是一个整数值,例如" 100"。

19.enabled

指定是否启用小部件。启用状态的解释因子类而异。例如,未启用的 EditText 会阻止用户编辑包含的文本,而未启用的 Button 会阻止用户点击按钮。如果评估 state_enabled 时引用的可绘制对象不同,则启用和非启用小部件的外观可以不同。

20.fallbackLineSpacing

是否尊重用于显示文本的回退字体的上升和下降。如果为真,最终被使用的后备字体可以增加使用它们的行的上升和下降。

21.android:firstBaselineToTopHeight

从 TextView 顶部到第一个文本基线的距离。如果设置,这将覆盖为 paddingTop 设置的值。

22.fontFamily

文本的字体系列(由字符串命名或作为字体资源参考)。可以是字符串值,使用 ‘\;’ 转义 Unicode 字符的字符,例如 ‘\n’ 或 ‘\uxxxx’;

23.fontFeatureSettings
字体功能设置。可以是字符串值,使用 ‘\;’ 转义 Unicode 字符的字符,例如 ‘\n’ 或 ‘\uxxxx’;

24.android:fontVariationSettings

字体变化设置。可以是字符串值,使用 ‘\;’ 转义 Unicode 字符的字符,例如 ‘\n’ 或 ‘\uxxxx’;

25.freezesText

如果设置,除了元数据(例如当前光标位置)之外,文本视图将在其冻结的冰柱内包含其当前完整文本。默认情况下这是禁用的;当文本视图的内容未存储在持久性位置(例如内容提供程序)中时,它会很有用。因为 EditText无论属性值如何,它始终处于启用状态。

26.includeFontPadding

为上升和下降留出足够的空间,而不是严格使用字体上升和下降。(通常为真)。

27.inputMethod

如果设置,则指定此 TextView 应使用指定的输入法(由完全限定的类名指定)。

28.inputType

放置在文本字段中的数据类型,用于帮助输入法决定如何让用户输入文本。此处的常量对应于由 定义的常量 InputType。通常,您可以选择单个值,但也可以按照指示将某些值组合在一起。将此属性设置为除此之外的任何内容 none 也暗示文本是可编辑的。

29.lastBaselineToBottomHeight

从 TextView 底部到最后一个文本基线的距离。如果设置,这将覆盖为 paddingBottom 设置的值。

可以是一个维度值,它是一个浮点数,附加一个单位,例如" 14.5sp"。可用单位有:px(像素)、dp(与密度无关的像素)、sp(基于首选字体大小的缩放像素)、in(英寸)和 mm(毫米)。
30.letterSpacing

文本字母间距。可以是一个浮点值,例如" 1.2"。
31.lineHeight

文本行之间的显式高度。如果设置,这将覆盖为 lineSpacingExtra 和 lineSpacingMultiplier 设置的值。

可以是一个维度值,它是一个浮点数,附加一个单位,例如" 14.5sp"。可用单位有:px(像素)、dp(与密度无关的像素)、sp(基于首选字体大小的缩放像素)、in(英寸)和 mm(毫米)。

32.lineSpacingExtra

文本行之间的额外间距。该值不会应用于最后一行文本。

可以是一个维度值,它是一个浮点数,附加一个单位,例如" 14.5sp"。可用单位有:px(像素)、dp(与密度无关的像素)、sp(基于首选字体大小的缩放像素)、in(英寸)和 mm(毫米)。

33.lineSpacingMultiplier

文本行之间的额外间距,作为乘数。该值不会应用于最后一行文本。可以是一个浮点值,例如" 1.2"。

34.lines

使 TextView 正好是这么多行高

35.linksClickable

如果设置为 false,即使 autoLink 导致找到链接,也不会将移动方法设置为链接移动方法。

可以是一个布尔值,例如 “true"或"false”。

36.marqueeRepeatLimit

重复选取框动画的次数。仅当 TextView 启用了选取框时才应用。

37.maxEms

使 TextView 最多有这么多 em 宽。

38.maxHeight

使 TextView 最多有这么多像素高。

可以是一个维度值,它是一个浮点数,附加一个单位,例如" 14.5sp"。可用单位有:px(像素)、dp(与密度无关的像素)、sp(基于首选字体大小的缩放像素)、in(英寸)和 mm(毫米)。

39.maxLines

使 TextView 最多有这么多行高。当用于可编辑文本时,该inputType属性的值必须与textMultiLine要应用的 maxLines 属性的标志相结合。

40.numeric

如果设置,则指定此 TextView 具有数字输入法。默认值为假。

41.password

字段的字符是否显示为密码点而不是本身。

可以是一个布尔值,例如 “true"或"false”。

42.phoneNumber

如果设置,则指定此 TextView 具有电话号码输入法。默认值为假。

可以是一个布尔值,例如 “true"或"false”。

43.privateImeOptions

提供给附加到文本视图的输入法的附加内容类型描述,这是输入法的实现私有的。这只是在EditorInfo.privateImeOptions输入法连接时填写该字段。

可以是字符串值,使用 ‘\;’ 转义 Unicode 字符的字符,例如 ‘\n’ 或 ‘\uxxxx’;

44.scrollHorizontally

是否允许文本比视图更宽(因此可以水平滚动)。可以是一个布尔值,例如 “true"或"false”。

45.selectAllOnFocus

如果文本是可选的,则在视图获得焦点时将其全部选中。

可以是一个布尔值,例如 “true"或"false”。

46.shadowColor

在文本下方放置一个模糊的文本阴影,用指定的颜色绘制。

47.shadowDy

文本阴影的垂直偏移。可以是一个浮点值,例如" 1.2"。

相关方法:setShadowLayer(float,float,float,int)

48.shadowRadius

文本阴影的模糊半径。可以是一个浮点值,例如" 1.2"。

49.textAllCaps

以全部大写形式呈现文本。这可以会在可用时使用小型股形式。

可以是一个布尔值,例如 “true"或"false”。
50.textAppearance

基本文本颜色、字体、大小和样式。

可以是对另一个资源的引用,形式为"@[+][package:]type/name"或形式为"?[package:]type/name"的主题属性。

51.textFontWeight

TextView 中使用的字体的粗细。可以是一个整数值,例如" 100"。

android:textIsSelectable

表示可以选择不可编辑文本的内容。可以是一个布尔值,例如 “true"或"false”。

52.textScaleX

设置文本的水平比例因子。可以是一个浮点值,例如" 1.2"。

53.textStyle

文本的样式(正常、粗体、斜体、粗体|斜体)。

54.typefac

文本的字体(正常、无衬线、衬线、等宽)。必须是以下常量值之一。
55.focusable
当我们写代码的时候总会发现有的控件获取不到焦点,那是因为ImageButton,Button等都是抢占焦点的控件

android:focusable=”true” 这行的意思就是说可以获取焦点

android:focusable=”false” 这行就是不可获取焦点

可以根据需求来写要不要获取焦点。

焦点的作用:假如某控件没有焦点,相当于你点不到那个控件。不能对其进行监听操作等。

应用场景: 在我们实现底部导航功能时,可以给想应的导航栏控件设置获取焦点的属性,提高用户体验度。
56.textCursorDrawable
EditText有一个属性:android:textCursorDrawable,这个属性是用来控制光标颜色的

android:textCursorDrawable="@null","@null"作用是让光标颜色和textcolor一样

PS:

textcursordrawable 在framework 的textview 中有这个 它代表的就是光标,是一张点9图片 ,只要去换这张图片可以了

这张图片在framework/core/res/res/values/themes.xml 中去更换。
在应用层也可以再editText中设置
在EditText中插入下面语句,增加一个属性,就可以设置输入框中光标的颜色android:textCursorDrawable="@drawable/ic_png"也可以更换光标

经过测试发现大部分手机的光标颜色通过上述代码都可以改变,但发现华为手机的输入框光标颜色还是系统自带颜色,设置的颜色无效果。那么还需要在EditText中加入下面的语句,才能使得华为手机的输入框光标颜色生效。

   android:imeOptions="normal"

版权声明:本文为DASHBB原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。