Android O 新特性 AutoSizing

自动调整TextView的大小的使用autoSizing

Android 8.0允许根据TextView的大小自动设置文本展开或收缩的大小,这意味着,在不同屏幕上优化文本大小或者优化包含动态内容的文本大小比以往简单多了。

在之前看 文字太多?控件太小?试试 TextView 的新特性 Autosizing 吧! 作者写到关于这个属性的所有用法,在这里我就不多说什么了,用法其实挺简单,关键是我在用的时候遇到了一些小问题,导致一直出不来。

官方文档 点击即可查看,可以看别人讲解的同时也可自行查阅文档,双方对比着看,感觉会好一点。

如下图可以简单明了的说明该特性:

https://user-gold-cdn.xitu.io/2018/1/16/160fe2fd1fa4e936?w=469&h=713&f=gif&s=764107

具体最简单的使用有两种:

1.一种就是api >= api 26的可以直接在xml里面该属性:

<?xml version="1.0" encoding="utf-8"?>
<TextView
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:autoSizeTextType="uniform" />

在此需要注意的是:使用这个autoSizeTextType的时候,控件的layout_width layout_height 不能使用这个wrap_content否则看不出什么效果,要使用具体可衡量的。这个也不难理解,因为它要计算,你设置一个模糊的宽和高,就算不出来了。

2. api<26 的低设备 的兼容写法

官方文档里也明确说明了兼容低版本The library provides support to Android 4.0 (API level 14) and higher. 也就是兼容到4.0以上,写法有些不同,如下:

<?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"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

  <TextView
      android:layout_width="match_parent"
      android:layout_height="200dp"
      tools:ignore="MissingPrefix"
      app:autoSizeTextType="uniform" />

</LinearLayout>

这个app是这个xmlns:app="http://schemas.android.com/apk/res-auto" 我们在自定义控件的时候经常遇到它,tools是这个xmlns:tools="http://schemas.android.com/tools" 当然以上写法都支持动态编码,具体可查阅文档

敲黑板重点

你会发现你写完之后编译是报错的,错误类似是这样的:

1516094635.jpg

找不到!!!

在写那篇文章作者的帮助下,发现首先要兼容低版本,modulebuild.gradle 文件添加依赖时候 就是这个com.android.support:appcompat-v7:xx 后面的版本号要26以上,你看看你自己项目里有哪个版本你就写上哪个,还要在projectbuild.gradle 文件里添加:
maven{ url 'https://maven.google.com' }添加到对应的位置

allprojects {
    repositories {
        jcenter()
        //添加如下内容
        maven{
            url 'https://maven.google.com'
        }
    }
}

至此我发现我的项目终于不报错了,可以运行起来并进行下一步的实践操作了,大家如果在项目中也遇到这样的问题,按我那样改应该没啥问题了,顺便把我写的代码上传到github 上了,又需要的可以下载看看:
demo

另外在查看 Android O新特性中发现一个比较好玩的东西:现在,findViewById() 函数的全部实例均返回 <T extends View> T,而不是 View。以后就可以这么写啦:

EditText et =  findViewById(R.id.et);

就是那样,无需强转了,当然了使用了Kotlin的话就忽略吧,因为KotlinfindViewById也不用写,哈哈。更多好玩特性可查看 文档

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,319评论 25 708
  • 内容抽屉菜单ListViewWebViewSwitchButton按钮点赞按钮进度条TabLayout图标下拉刷新...
    皇小弟阅读 47,176评论 22 665
  • 一、李张家琪的阳光日记: 1.今天我很高兴,因为她喝水了,把我的话听进去了。 2.今天我很高兴,她自己热奶,刷杯子...
    琪铭阅读 519评论 0 0
  • 前所未有的心累,不想说,也不能静心听,只想这样沉沦。可是现实又不允许,只能拖着沉重脚步前行,突然觉得一切都没有什么...
    冠世墨玉yanzi阅读 197评论 1 0
  • day62 《关心对方关心的话题》。当我们面对一件东西可买可不买的时候,当我们面对一个人可帮可不帮的时候,如果我们...
    Molly_zhang阅读 243评论 0 0

友情链接更多精彩内容