首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

自定义实现垂直滚动的TextView

需求 当TextView限制最大行数的时候,文本内容超过最大行数可自动实现文本内容向上滚动 随着TextView的文本内容的改变,可自动计算换行并实时的向上滚动 文字向上滚动后可向下滚动回到正确的水平位置...自定义方法 自定义一个View,继承自View,定重写里面的onDraw方法 文字的滚动是用Canvas对象的drawText方法去实现的 public void drawText(@NonNull...,这里的x,y并不代表默认横向坐标为0,纵向坐标为0的坐标,具体详解我觉得这篇博客解释的比较清楚,我们主要关注的是参数y的控制,y其实就是text的baseline,这里还需要解释text的杰哥基准线:...由于text的baseline比较难计算,所以我们大约取y = bottom - top的值,这么坐位baseline的值不是很精确,但是用在此自定义控件上文字的大小间距恰好合适,在其他场景可能还是需要精确的去计算...,但是文字已经不滚动了 textStyle.y = textStyle.y - (lineHeight / 9.0f);

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

    【Vivado那些事】创建不包含源文件的IP

    有时候我们想参考官方的源码,但是有些IP怎么也找不到官方的源码,具体原因是什么呢? 下面从下面两种Vivado创建IP的流程看下具体的原因: ?...IP封装器为Vivado的任何用户提供了一种能力,即将设计流程任意阶段的一个设计进行封装,然后将该IP作为一个系统级的IP进行使用。...创建不包含源文件的IP 上面建立的IP可以很方便操作一下看到源文件,实际使用过程中IP作为知识产权的成果,设计者并不希望公开IP核的源代码,下面将带你建立一个不包含源文件的IP。...看到此时的界面为空的,并没有像前面封装包含源文件IP的时候出现“DELAY”参数,这是因为“DELAY”参数对于Verilog HDL而言是行为级描述,在综合的时候不起任何作用。...调用并验证不包含源文件的IP 设计 调用和使用完全和之前的章节一样,这里就不再赘述。

    2.9K11

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

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

    3.7K10

    Android项目实战(十):自定义倒计时的TextView

    ,我需要点击左边的播放按钮,然后右边有一个剩余时间要跟随着变化,当然点击暂停的时候,剩余时间也要暂停 首先,这里运用了购物车功能的原理实现按钮的操作。...Android 购物车功能的实现 怎么实现某一个列表项中的TextView 显示的剩余时间也跟随着变化呢? 找寻了很多方法,最后问了一个Android交流群的群主得以解决。...怎么实现呢: 即自定义一个TextView在列表项中来显示剩余时间,只要每次刷新适配器的时候,给这个自定义的TextView 一个初始值,然后TextView就可以自己自定来把初始值每秒减一,显示在TextView...那么看下这个自定义TextView import android.content.Context; import android.util.AttributeSet; import android.util.Log...学习内容来自: 自定义倒计时控件

    97860

    android TextView描边

    前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要重写了onDraw方法。 这一边讲一个进阶功能,实现textView的描边效果。 上效果图。 ?...上代码: public class StrokeTextView extends TextView { private TextView backGroundText = null;//用于描边的...params) { //同步布局参数 backGroundText.setLayoutParams(params); super.setLayoutParams...,而且我们通过上一篇博客知道,设置描边属性的textview,会比没有设置描边属性的textview粗一点 所以我们可以通过自定义两个Textview,其中一个有描边的作为背景TextView,另外一个没有描边的细一点的...这样两个textview合并在一起,就给人一种有描边的感觉。 知识点讲解: 1、对于需要修改、或者需要封装自定义控件的小伙伴,可以只针对init进行修改。

    3.2K00

    制作包含自定义rancherui的docker镜像

    sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher 但如果我们想要对rancher的ui做一些自定义的定制...,除了使用官方推荐的修改ui接口外,能否将自定义的UI打也打包成一个镜像。...官方推荐的自定义UI部署方式,build时必须确定访问域名,部署到五个机器就要build五次,非常不方便。 所以要想办法,能否将自定义的UI通过官方的build镜像的方式,直接打包到镜像中。...是v2.4.5, 那编译的镜像就是v2.4.5 另外编译的镜像也要为rancher/rancher:xx 否则有可能不能用,因为内部有一些镜像名称校验 此外如果你要build一个包含自定义UI的镜像 只需要两步...构建包含自定义UI的镜像就要使用这个压缩包,将此文件上传至服务器, 拿到公网访问的链接如 http://1.2.3.4/v2.4.5.tar.gz 是否方法是 在ranhcer的项目下,修改package

    79110

    TextView实现自定义换行以及缩进文字的格式化对齐

    自定义换行 我们通常在自定义控件的时候会遇到不想用系统默认的文字换行,而需要根据自己的需求来实现文字的换行,原理如下: 使用Paint的measureText方法来测量文字的长度 假设设定单行的最大长度为...的文本内容创建出来的,然后可以用ImageSpan去替换Spannable中的任意一个位置 文本缩进实现 依然是用TextView的富文本Spannable去实现,代码如下: Spannable spannable...去替换掉你想替换的位置,比如我替换的是第一个位置,当然不能为了缩进把一些真正的文字内容给替换掉了,所以需要在想替换的位置中插入一些无用字符来占位,然后再去用图片或者空的图片来替换这个占位符的位置,我定义的占位符为...“#”,一下代码实现了图文混排,文字缩进,自定义换行的功能: private void formatText(Bitmap bitmap, String text) { int sapceWidth...,会导致已经达到了TextView自动换行的时机了,但是我们自定义的换行时机还没有达到,所以自定义换行的时机一定要发生在TextView自动换行时机之前这样才能保证自定义换行实现准确换行,至于如何在View

    2.6K20

    【Android从零单排系列三十】《Android布局介绍——RelativeLayout》

    以下是对RelativeLayout的基本介绍: 相对位置:RelativeLayout使用相对位置来定义子视图之间的关系。...编程控制:除了在XML布局文件中设置属性外,开发者也可以通过编程方式使用RelativeLayout的方法来动态地添加和管理子视图,例如使用addView()、setLayoutParams()等方法。...textParams.addRule(RelativeLayout.BELOW, R.id.button1); textParams.addRule(RelativeLayout.ALIGN_LEFT, R.id.button1); textView.setLayoutParams...android:layout_centerHorizontal="true"         android:layout_marginTop="20dp"/> 这个布局中包含了两个按钮...其中,textview位于btn1的下方并水平居中对齐。btn1位于父容器的左上角,而btn2位于右上角。

    58830
    领券