问题标签 [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.

0 投票
0 回答
289 浏览

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来指定段落间距。这可能是一个有点肤浅的问题,如果它激怒了你,请原谅我,但如果可能的话,请回答。

0 投票
1 回答
777 浏览

android - Android - 使用静态布局在位图底部绘制文本

我有以下代码将一些文本放在图像的顶部:

但是,实际上,我希望文本位于图像的底部。如何将StaticLayout与底部对齐Bitmap,使文本出现在图像底部。

截屏

0 投票
1 回答
4180 浏览

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);

0 投票
1 回答
52 浏览

java - 应用两次时,绘制属性不起作用

我正在尝试创建具有白色和黑色轮廓的自定义影响字体(又名“模因字体”)。我在画布的两端有 2 个文本,但只有一个反映了更改。到目前为止,这是我所拥有的:

在此处输入图像描述

这是我的代码:

0 投票
1 回答
439 浏览

android - 在 Android 画布中绘制包含 HTML 代码的 StaticLayout 文本

让一个多行 HTML 文本像这样:<div style="color: red;"><b>foo</b></div>. 它可以是多行的,因为这些条件中至少有一个为真:a)文本很长或 b)至少有一个<br />

目的是在画布中绘制此文本,该画布使用Bitmap.

我编写的最小代码如下(android.graphics.Canvasandroid.graphics.drawable.BitmapDrawable...):

如果变量caption包含 HTML 代码,则不会解释后者。换句话说:标签实际上会显示在结果图像中。

是否可以让 Android 应用程序解释此代码?

0 投票
0 回答
164 浏览

android - android.text.html (fromHtml): 渲染内联 CSS 颜色

我有一个像这样的文本:<b style="color: rgb(255, 0, 0);">Test</b>它被赋予Html.fromHtml调用,它返回一个Spanned用于在绑定到 aStaticLayout的 Android 上绘制的a 。CanvasBitmap

绘制的图像包含此粗体文本。但后者不是红色的,这虽然是由 CSS 内联样式定义的。

我知道该选项Html.FROM_HTML_OPTION_USE_CSS_COLORS存在,但是(正如我可以在文档中隐含地阅读的那样)它没有这个目的。

来源

注意:在下面的代码中,mTextPaint.setColor(Color.WHITE);被注释掉了。文本在黑色背景上涂成黑色。但不是红色的。所以问题不在于mTextPaint.setColor会覆盖我的 CSS 内联样式颜色。

0 投票
1 回答
855 浏览

android - 画布的StaticLayout定位中心不像canvas.drawText那样工作?

在正常绘制时drawText,文本定位到画布的中心。但我的要求是放置多行文本,所以我必须使用 StaticLayout,但 StaticLayout 并没有像drawText 我迄今为止尝试过的那样放置。

这是我得到的两个 在此处输入图像描述 蓝色的使用正常完成drawText,绿色的正在使用StaticLayout

0 投票
1 回答
429 浏览

android - W/StaticLayout:maxLineHeight 不应为 -1。最大行数:1 行数:1

所以我得到这个 W/StaticLayout: maxLineHeight 不应该是-1。maxLines:1 lineCount:1 向日志发送垃圾邮件,我在这里阅读的答案表明它是一个已修复但仍然存在的错误,但想知道是否有人有解决方法,发布问题的用户发现这是一个问题使用最大线和椭圆大小,但我没有使用,如果有人可以帮助我会很感激,我在视图寻呼机中有一个视图寻呼机,它显示带有底部导航视图和一些选项卡的卡片(请不要质疑设计在这种疯狂中有一种方法)这是我的内部视图寻呼机布局

这是我的视图持有者,它包含一个工具栏、选项卡和底部导航栏,整个东西本质上是一个虚拟布局,让用户预览给定特定主题的布局看起来像什么,我的任何一个都没有除了设置颜色之外的样式,

我将这些属性设置为我的 tablayout

我像这样设置标签图标和文本

0 投票
0 回答
215 浏览

android - 不同字体大小的画布

我使用以下函数将字符串转换为 Android 中的位图:

我想对其进行转换,以便可以创建具有不同字体样式的位图,如下所示:

有什么方法可以将多个具有不同样式的 TextPaint 对象附加到 StaticLayout 中?

结果将类似于

更新:我修改了函数以获取格式化文本数组而不是单个字符串,并且我按照 dpskink 的建议使用 SpannableStrings。

从我的主要活动:

似乎它正在工作。唯一让我困扰的是 Paint/TextPaint 对象,它们是为带有转储数据的 StaticLayout 构造函数创建的...

0 投票
1 回答
548 浏览

android - 测量多行文本的紧密边界框

我正在使用 在画布上绘制多行文本StaticLayout,并且我想在绘制之前测量文本周围最紧密的边界框(文本可能有不同的大小、字体、样式等......),我想要类似的东西那:

我希望它返回文本周围最紧密的边界框,即(如果我们谈论的是文本的像素):

如果文本是单行,我可以这样做:

但由于文本可能有多行,我必须考虑行间距和字形下降以及所有其他字体参数......所以下一个选项将是使用StaticLayoutwith maximalLineWidth(为了换行),但StaticLayout不计算最紧凑的盒子,它会在顶部和底部添加一些填充(因为它基本上是行数乘以最大行高):

例如,绿色框是测量的结果,StaticLayout红色框是我想要接收的框:

在此处输入图像描述 在此处输入图像描述 在此处输入图像描述

我该怎么做?谢谢。