首页
学习
活动
专区
圈层
工具
发布

带着问题去看源码——TextView篇

序言:为什么会分析这个问题呢,因为上次钉钉电话面试中被面试官问到了,很尴尬的没回答出来,View的绘制流程看过一点源码,但是感觉还不够,像这种View的问题能够延伸出很多问题,下面正文开始: Q1:在一个...RelativeLayout中有一个TextView和一个Button,当点击Button的时候给TextView设置文本,这时RelativeLayout会重新测量吗?...首先我们先大致的想一下这个问题问的是关于哪一块的知识,如果毫不犹豫上去就是一通回答,这样显得太不明智了,我也知道会重新测量,为什么?下面我们从源码的角度去看。...既然是设置文本,那么我们就从TextView的setText中去看看吧: TextView: private void setText(CharSequence text, BufferType type...这个问题呢,是我在找上面那个问题的答案的过程中发现的,既然是宽高的问题,那么我们当然得要去看onMeasure方法了: if (widthMode == MeasureSpec.EXACTLY) {

86830

解决TextView排版混乱或者自动换行的问题

其实在TextView中遇到排版自动换行而导致混乱不堪的情况是非常常见的,而且导致这种问题产生的原因就是英文和中文混合输入,半角字符和全角字符混合在一起了。...一般情况下,我们输入的数字、字母以及英文标点都是半角字符,所以占位无法确定,它们与汉字的占位不同,由于这个原因,导致很多文字的排版都是参差不齐的。...原因找到了,自然解决方法就来了,一般有以下两种方法来解决这种问题。 1、将TextView中的字符全角化。...即将所有的数字、字母及标点全部转为全角字符,使它们与汉字同占两个字节,这样就可以避免由于占位导致的排版混乱问题了。...半角转为全角的代码如下: /** * 半角转换为全角 * * @param str * @return */ public static String

5K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    会变色的TextView

    在公司的 APP 中有类似如下图的聊天文字效果。一条聊天信息中,发送者名字的颜色是会随机改变,而内容信息是固定一个颜色。 ?...你认为先实现这方法很简单,使用两个 TextView 控件就可以搞定完事。左边的 TextView 放置名字,右边的 TextView 放置内容。这种方法是可以实现,那有没有更好的方法呢?...它的作用是能够改变字符串的字体颜色,设置字符串的字体样式,为字符串添加下划线等。...使用 SpannableString SpannableString 用法可以分为三部走: 首先实例化一个 SpannableString 对象,然后为其设置样式,最后将 spanStirng 填充到 TextView...我选择 RecycleView 来显示数据,它的 item 布局中放置一个 TextView。 ?

    1.1K10

    【Android】TextView的使用

    三三想成为安卓糕手 一:TextView的常见属性 1:引入 TextView:文本显示控件,基于TextView还有很多子类,都与文本处理有关...,大多数文本控件都是基于TextView设计的,比如下面的按钮button,编辑框EditText等等;主要学习TextView,一法通万法 2:页面跳转 这里我们调整一下页面跳转 Button btnTest...默认是horizontal 4:Java代码后续修改xml的默认属性 (1)xml设置文本属性 用xml方式设置一些初始属性,比如文本内容和文字尺寸 TextView android...点击是每一个view都拥有的方法;button也好,textview也好,图片等等 我悟了xd,java跳转页面后文字内容和尺寸的改变实际上还是作用在一个activity上,本质只是修改,而非再创建 (...ellipsis [ɪˈlɪpsɪs] 省略 8:TextView 中配置drawable 哇靠,自己理解drawable,这玩意就是指能在屏幕上绘画出各种图形的相关资源。

    26600

    Android 面试题之TextView 的textDirection属性和右对齐问题

    默认行为 textDirection 的默认值: 默认情况下,TextView的文本方向是由系统自动设置的。具体而言,它默认的方向是 TEXT_DIRECTION_FIRST_STRONG。...这意味着 TextView 将根据文本内容的第一个强方向性字符(例如一个字母或一个数字)来决定文本方向。如果第一个强方向性字符属于一种从左到右(LTR)语言,那么文本的方向将是从左到右。...如果第一个强方向性字符属于一种从右到左(RTL)语言,那么文本的方向将是从右到左。 layoutDirection 的默认值: 布局方向通常依赖于应用的区域设置(locale)和设备的语言设置。... 2、切换到右语言,重新设置Context的Locale,重启App即可生效 特殊情况 一般右语言,TextView的默认行为都没问题,因为文案也是对应的右语言语种,但如果对应的文案没有翻译成右语言...,比如是写死的中文,那TextView就不会按照右语言来处理了,这个时候就需要为TextView设置textDirection属性,有2种方式 直接布局里设置android:textDirection=

    1.1K10

    TextView的setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds的区别

    摘要 我们都只TextView支持设置文字和图片同时显示,通常会联想到两种方法,一种是直接设置drawableXXX(Left, Top, Right, Bottom),四个方向的,还有一种是富文本的形式...直接设置图片,要么是xml直接设置,要么是java类里面动态设置,但是在动态设置的时候,经常会直接采用setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds..., bottom); } 看到源码之后,一目了然,setCompoundDrawablesWithIntrinsicBounds和setCompoundDrawables,就是前者先这只了资源的大小...,然后调用setCompoundDrawables,去显示图片资源, 简而言之: setCompoundDrawables 画的drawable的宽高是按drawable.setBound()设置的宽高...,所以必须先设置drawable的宽高,在调用该方法,才会显示 setCompoundDrawablesWithIntrinsicBounds是画的drawable的宽高是按drawable固定的宽高

    1.6K10

    【Android】TextView的跑马灯效果

    2.gif 说明 TextView的跑马灯效果也就是指当你只想让TextView单行显示,可是文本内容却又超过一行时,自动从左往右慢慢滑动显示的效果就叫跑马灯效果。...所以,轻度强迫症的题主实在忍不住了,自己写一篇记录一下。另外,最近在学习竖直方向循环滚动显示的TextView,等理解掌握透了后也会记录下来。好了,话不多说,看代码。...1.png 跑马灯不能启动的问题 如果对TextView的跑马灯不熟悉的话,第一次使用应该会碰到各种跑马灯效果不工作的状态。...TextView得是单行显示,还必须可以获取焦点,这样当TextView获取焦点后跑马灯效果才会启动,如最上面动图里的第二个TextView。...看下TextView关于跑马灯启动的相关源码你就会更清楚 ?

    5.9K60

    TextView设置文字包含中英文时自动换行问题的终极解决方案

    解决android textview自动换行问题 情景,正常TextView中设置文本内容中包含中英文时会造成自动换行的问题,影响界面显示效果,如图: 最终是要如下代码完美解决,...textView) { final String originalText = textView.getText().toString(); //原始文本 final...Paint tvPaint = textView.getPaint();//获取TextView的Paint final float tvWidth = textView.getWidth...() - textView.getPaddingLeft() - textView.getPaddingRight(); //TextView的可用宽度 //将原始文本按行拆分...setText 方法,注意该方法不能再主线程中执行 如果TextView宽度设置为WrapContent,为了测量它的准确宽度,可先使用setText()方法设值,再调用setAdaptiveText(

    4.2K10
    领券