android - 如何将 DynamicLayout 锚定到 Canvas 底部?

标签 android android-layout android-view

我正在开发一个自定义 View,其中包含我想固定在 Canvas 底部的经常更新的文本。

文本长度也发生变化,我希望它换行,在需要更多行时向上移动屏幕。 (DynamicLayout 因此似乎是自动化的可靠选择)

但是,我在文档中没有看到任何关于指定在我的 Canvas 上绘制文本的位置或文本应该“增长”的方向的选项。

这是我的初始化:

TextPaint subtleTextPaint = new TextPaint();
DynamicLayout dl = new DynamicLayout(text,subtleTextPaint,getWidth()
    ,Layout.Alignment.ALIGN_CENTER,1,0,true);

onDraw() 中,我只是将 Canvas 传递给 DynamicLayout 对象,如下所示:

dl.draw(c);

现在,文本绘制在屏幕的最顶部,并随着文本变长而向下换行。

最佳答案

经过相当多的搜索,我没有找到任何符合我要求的东西。因此,以真正的黑客风格,我创建了自己的解决方案。通过扩展 DynamicLayout 类并覆盖 getLineTop() 函数,我能够实现我正在寻找的功能。

我已经发布了 source code here .

关于android - 如何将 DynamicLayout 锚定到 Canvas 底部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14645524/

相关文章:

android - Flutter - 如何滚动到 ListView 的底部?

作为应用程序工作但不作为小程序工作的 Java 类

java - listview.setOnItemClickListener 不起作用

java - 不在android studio中显示styles.xml

android - 替换 fragment 后状态栏覆盖工具栏

android - 将 ParseLoginUI 作为模块导入时出现错误 :Execution failed for task ':app:dexDebug' .

java - 如何设置 get CreatedAt(); android textview 中的日期对象?

android - TextView 顶部填充问题?

android - 如何将动态自定义 View 嵌入到 xml 布局中?

android - CoordinatorLayout 中的 ViewPager 涵盖 API >= 21 上的其他 View