有这样一个需求,要求在一个列表中的每个条目中展示字数不限个数的文本。而且每个条目的宽度都是固定的,展示的文本如果过长,不可以用省略号显示,只能动态的调整(缩小)文本的字号来达到文本能完全显示的效果,而且要限一行展示。关于这个效果,其实目前android官方已经提供了实现方式。那就是AutoSizeableTextView。

  <android.support.v7.widget.AppCompatTextView
android:id="@+id/atv"
android:layout_width="match_parent"
android:layout_height="40dp"
android:maxLines="1"
android:textColor="#f00"
android:textSize="12sp"
app:autoSizeMaxTextSize="20sp"
app:autoSizeMinTextSize="4sp"
app:autoSizeStepGranularity="1sp"
app:autoSizeTextType="uniform" /> //none时为不支持改变

代码使用

TextViewCompat.setAutoSizeTextTypeWithDefaults(textView, TextViewCompat.AUTO_SIZE_TEXT_TYPE_UNIFORM);
TextViewCompat.setAutoSizeTextTypeUniformWithConfiguration( textView, 8, 25, 1, TypedValue.COMPLEX_UNIT_SP);

1.当低于27的时候,这个TextView必须属于AutoSizeableTextView类型的,而前面已经说过,AppCompatTextView实现了AutoSizeableTextView接口,因此,为了兼容老版本,我们在xml声明的时候需要声明为AppCompatTextView。

2.控件的宽度和高度必须要有具体的值,不能设置为wrap_content。这一点估计也好理解,如果宽高不固定,也就不会有根据宽高改变字号这一问题了。

3.关于一行展示这个属性,平时我们应该都知道两种方式。那就是singleLine="true",或者maxLines="1"。看我上面的代码,两种方式我都采用的是maxLines="1"的方式进行设置,如果用singleLine的话会发现无法显示预期的效果的。

AppCompatTextView可改变文本字体大小的更多相关文章

  1. HTML5移动Web开发(八)——避免文本字体大小重置

    适用设备:iOS.Windows Mobile在一些移动设备上,比方说iPhone,Windows Mobile,当用户把手机切换到横屏时,浏览器会自动地重置文本字体大小.这可能会对我们造成困扰,因为 ...

  2. iOS NSString 文本不同的颜色 标题+文本字体大小 行间距/删除不需要的字符 /以及自适应高度

    #import <Foundation/Foundation.h> @interface TextsForRow : NSObject @property(nonatomic,copy)N ...

  3. Android设置不被系统设置改变的字体大小

    原因 从4.0开始,系统设置中“显示”可以对字体大小进行配置,这会影响到TextView等控件中文字显示的大小. 解决方案 在自定义的Activity中重写getResources方法 @Overri ...

  4. 用js判断屏幕的宽度,改变html字体大小用rem布局

    if (document.documentElement.clientWidth > 600) {//页面宽度大于600px让其宽度等于600px,字体大小等于60px,居中 document. ...

  5. MarkDown编辑器中改变文本字体颜色大小

    法一 有点类似前端里 <font face="微软雅黑" size=4 color=red>输入的文字</font> 其中 face对应字体 size 大小 ...

  6. eclipse中python文本字体大小设置

    eclipse中python脚本用默认的字体和大小,注释是中文的也看不清楚,改一下字体吧 windows-preferences-python-editor-colors and fonts 其实上一 ...

  7. 如何改变Xcode字体大小?

    运行Xcode后依次点击左上角Xcode/Preferences/Fonts & Colors里就可以调整,在右边随便点中一个字体就可以调整这个字体的大小和颜色了,按command+a可以将所 ...

  8. js 改变文章字体大小

    //设置页面文字大小 function SetFontSize(areaid, size) { document.getElementById(areaid).style.fontSize = siz ...

  9. sublime text3文本字体大小设置

    1.perferences->settings-user 4·将以下代码粘贴进入即可 { "font_face": "source code pro, " ...

随机推荐

  1. 请求类型 GET 和 POST 的区别

    一.GET 一个简单的 GET 请求: xmlhttp.open("GET","demo_get.asp",true); xmlhttp.send(); 在上面 ...

  2. 0013SpringBoot处理国际化问题

    1.application.properties中指明国际化文件所在路径和文件前缀 2.登录页面用#{}的形式从国际化配置文件中取值 3.编写国际化文件 ----------------------- ...

  3. unity里blit的load store action设置

    做blit的 load store action时 用 setrendertarget做 之后blit 参数用 BuiltinRenderTextureType.CurrentActive https ...

  4. bzoj 3721: PA2014 Final Bazarek 贪心

    如果没有限制,直接取前 $k$ 大即可. 有限制,则只有几种可能:奇换偶,偶换奇. 维护奇数偶数的前缀最小值和后缀最大值即可. code: #include <bits/stdc++.h> ...

  5. 如何自定义 GNOME 3 桌面?

    作者: Magesh Maruthamuthu 译者: LCTT 郑 | 2019-08-22 00:02   评论: 2 收藏: 1 我们收到很多来自用户的电子邮件,要我们写一篇关于 GNOME 3 ...

  6. 主席树K-th Number

    /*K-th NumberTime Limit: 20000MS Memory Limit: 65536KTotal Submissions: 44535 Accepted: 14779Case Ti ...

  7. 每秒浮点运算次数flops

    每秒浮点运算次数[编辑] 维基百科,自由的百科全书     跳到导航跳到搜索 此条目需要补充更多来源. (2018年2月28日)请协助添加多方面可靠来源以改善这篇条目,无法查证的内容可能会因为异议提出 ...

  8. tsnr--基于vpp+dpdk的高性能防火墙

    tsnr--基于vpp+dpdk的高性能防火墙 2019年01月31日 12:06:00 网络安全研发随想 阅读数:508   版权声明:本文为博主原创文章,未经博主允许不得转载. https://b ...

  9. DEA使用git提交代码时,点了commit之后卡死在performing code analysis部分,或者performing code analysis结束后没有进入下一步操作。

    把"Perform code analysis" 和 "Check TODO" 复选框前面的勾去掉就好了. 这个可能是因为所分析的目标文件太大了,造成一直分析不 ...

  10. CSPS模拟94

    我好菜啊...... %%%迪神AK 虽然考试成绩不太好,但至少能想到正解了,也不会菜到打不出暴力. T1:想了半天不会,发现直接打高精可以拿到80分,就赶紧码完扔了,结果正解是利用double避免了 ...