问题标签 [staticlayout]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 如何在 Android 中通过 StaticLayout 使用指定的段落间距
我有一个长文本,其中有多个段落。但我想在文本中的两个段落之间使用指定的(最终超过行距值)段落间距。在这里,我使用StaticLayout并在画布上绘图。由于没有参数可以做到这一点,我试图通过像下面这样的小技巧来做到这一点。
方式1:扩展StaticLayout并覆盖一些方法。这是不可能的,因为私有和包特定的方法是不可覆盖的。像下面
因此,无法通过覆盖上述方法在代码逻辑中引入段落间距属性。
方式 2:通过将StaticLayout代码复制到我的CustomStaticLayout并直接扩展Layout类并在这种情况下引入段落间距属性,我无法访问许多只能在 android.text 包或某些内部包中访问的代码。
PS:这种方法很糟糕,因为代码被复制并且打开/关闭主体[对扩展开放并接近修改/复制]没有得到维护,但是这种方法是拼命尝试以某种方式实现目标。
这里我不能使用常量和类比如对齐值“ALIGN_LEFT”和“ALIGN_RIGHT”所以不能直接使用StaticLayout的代码。像下面这样的很少。
同样,在StaticLayout中使用的本地方法也很少,如下所示,这些方法也无法从我的CustomStaticLayout访问。
PS:请告诉是否可以使用类CustomStaticLayout中的这些本机方法
方式 3:如果可能的话,如何使用HTML.fromhtml来实现相同的目标,例如指定段落间距。
PS:我对html的了解非常有限,所以真的不知道怎么用html来指定段落间距。这可能是一个有点肤浅的问题,如果它激怒了你,请原谅我,但如果可能的话,请回答。
android - 什么是已弃用的 StaticLayout 的替代品
应该使用什么来代替:
给出这个警告:
警告: [deprecation] StaticLayout(CharSequence,TextPaint,int,Alignment,float,float,boolean) 在 StaticLayout 已被弃用 StaticLayout layout = new StaticLayout(text, paint, width, Alignment.ALIGN_NORMAL, mSpacingMult, mSpacingAdd, false);
android - 在 Android 画布中绘制包含 HTML 代码的 StaticLayout 文本
让一个多行 HTML 文本像这样:<div style="color: red;"><b>foo</b></div>
. 它可以是多行的,因为这些条件中至少有一个为真:a)文本很长或 b)至少有一个<br />
。
目的是在画布中绘制此文本,该画布使用Bitmap
.
我编写的最小代码如下(android.graphics.Canvas
,android.graphics.drawable.BitmapDrawable
...):
如果变量caption
包含 HTML 代码,则不会解释后者。换句话说:标签实际上会显示在结果图像中。
是否可以让 Android 应用程序解释此代码?
android - android.text.html (fromHtml): 渲染内联 CSS 颜色
我有一个像这样的文本:<b style="color: rgb(255, 0, 0);">Test</b>
它被赋予Html.fromHtml
调用,它返回一个Spanned
用于在绑定到 aStaticLayout
的 Android 上绘制的a 。Canvas
Bitmap
绘制的图像包含此粗体文本。但后者不是红色的,这虽然是由 CSS 内联样式定义的。
我知道该选项Html.FROM_HTML_OPTION_USE_CSS_COLORS
存在,但是(正如我可以在文档中隐含地阅读的那样)它没有这个目的。
来源
注意:在下面的代码中,mTextPaint.setColor(Color.WHITE);
被注释掉了。文本在黑色背景上涂成黑色。但不是红色的。所以问题不在于mTextPaint.setColor
会覆盖我的 CSS 内联样式颜色。
android - W/StaticLayout:maxLineHeight 不应为 -1。最大行数:1 行数:1
所以我得到这个 W/StaticLayout: maxLineHeight 不应该是-1。maxLines:1 lineCount:1 向日志发送垃圾邮件,我在这里阅读的答案表明它是一个已修复但仍然存在的错误,但想知道是否有人有解决方法,发布问题的用户发现这是一个问题使用最大线和椭圆大小,但我没有使用,如果有人可以帮助我会很感激,我在视图寻呼机中有一个视图寻呼机,它显示带有底部导航视图和一些选项卡的卡片(请不要质疑设计在这种疯狂中有一种方法)这是我的内部视图寻呼机布局
这是我的视图持有者,它包含一个工具栏、选项卡和底部导航栏,整个东西本质上是一个虚拟布局,让用户预览给定特定主题的布局看起来像什么,我的任何一个都没有除了设置颜色之外的样式,
我将这些属性设置为我的 tablayout
我像这样设置标签图标和文本
android - 不同字体大小的画布
我使用以下函数将字符串转换为 Android 中的位图:
我想对其进行转换,以便可以创建具有不同字体样式的位图,如下所示:
有什么方法可以将多个具有不同样式的 TextPaint 对象附加到 StaticLayout 中?
结果将类似于
更新:我修改了函数以获取格式化文本数组而不是单个字符串,并且我按照 dpskink 的建议使用 SpannableStrings。
从我的主要活动:
似乎它正在工作。唯一让我困扰的是 Paint/TextPaint 对象,它们是为带有转储数据的 StaticLayout 构造函数创建的...
android - 测量多行文本的紧密边界框
我正在使用 在画布上绘制多行文本StaticLayout
,并且我想在绘制之前测量文本周围最紧密的边界框(文本可能有不同的大小、字体、样式等......),我想要类似的东西那:
我希望它返回文本周围最紧密的边界框,即(如果我们谈论的是文本的像素):
如果文本是单行,我可以这样做:
但由于文本可能有多行,我必须考虑行间距和字形下降以及所有其他字体参数......所以下一个选项将是使用StaticLayout
with maximalLineWidth
(为了换行),但StaticLayout
不计算最紧凑的盒子,它会在顶部和底部添加一些填充(因为它基本上是行数乘以最大行高):
例如,绿色框是测量的结果,StaticLayout
红色框是我想要接收的框:
我该怎么做?谢谢。