标签: staticlayout

StaticLayout如何在Android中使用?

我需要构建自己的自定义,TextView所以我一直在学习StaticLayout在画布上绘制文本.这比Canvas.drawText()直接使用更好,或者说文档说的.但是,文档没有给出任何示例.只有模糊的参考才能StaticLayout.Builder成为更新的方法.

我在这里找到了一个例子,但似乎有点过时了.

我终于工作了,但是我在下面添加了我的解释.

android text canvas android-custom-view staticlayout

22
推荐指数
1
解决办法
1万
查看次数

什么是Android的领先保证金?

领先保证金的含义是什么?

文件LeadingMarginSpan

影响前导边距的段落样式.单个段落可以有多个主要边距跨度; 它们将按顺序呈现,每个都将其边距添加到它之前的边距.右边到左边的段落中的前导边距位于右边.

但它并没有真正说明领先优势是什么.

它是否像段落第一行的制表符缩进?或者它是整个段落缩进的地方?我认为它是/lidɪŋ/而不是/lɛdɪŋ/就像在行之间的空间一样.

我想知道的原因是我正在尝试使用StaticLayout创建自己的TextView.我指的是想法的Layout和StaticLayout 源代码.我试图删除所有不必要的部分,但我不知道这是什么.

以下是一些SO问题,也询问领先优势,但问题似乎知道这意味着什么.

图像确实很有用,但并非绝对必要.

android margins leadingmarginspan2 staticlayout

14
推荐指数
1
解决办法
2274
查看次数

如何在Android中以固定宽度和高度将文本放入StaticLayout中?

我正在尝试使用绘制文本Canvas并发现使用StaticLayout会自动处理换行符。我还想限制它的高度,以便当文本太长时它会被椭圆化,但文本容器的大小是动态的。我可以轻松地将宽度应用于StaticLayout,但无法找到设置高度的方法。

我尝试使用TextUtils.ellipsize(),但在获取行之间的间距时遇到问题。

android staticlayout

8
推荐指数
1
解决办法
841
查看次数

Android Text Layout Spacingmult和Spacingadd?

public StaticLayout (CharSequence source, int bufstart, int bufend, TextPaint paint, int outerwidth, Layout.Alignment align, float spacingmult, float spacingadd, boolean includepad, TextUtils.TruncateAt ellipsize, int ellipsizedWidth)
Run Code Online (Sandbox Code Playgroud)

StaticLayoutAndroid 的构造函数中,做什么整数参数spacingmult,并spacingadd做什么?我也对includepad参数感到困惑.文档中没有解释.

android android-layout staticlayout

5
推荐指数
1
解决办法
1272
查看次数

TextView 和 EditText 中的 TextRendering

我有一个像这样的简单布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <EditText
        android:id="@+id/txtContent2"
        android:layout_width="300dp"
        android:layout_height="100dp"
        android:background="#fed9f4"
        android:textSize="22sp" />
    <View
        android:layout_width="match_parent"
        android:layout_height="10dp"/>

    <TextView
        android:id="@+id/txtBelow"
        android:layout_width="300dp"
        android:layout_height="100dp"
        android:background="#fed9f4"
        android:textSize="22sp"/>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

一个 TextView 和一个 EditText。当我在它们两个中设置相同的文本时,似乎每个文本呈现不同的文本。像下面这样: 顶视图是 EditText,下面是 TextView

我正在使用 StaticLayout 来测量文本并识别每行中的文本边界,我必须将文本设置为 TextView(因此用户无法编辑或选择它)。

但似乎 StaticLayout 文本边界计算与 EditText 匹配而不是 TextView。

StaticLayout layout = new StaticLayout(content, txtContent.getPaint(),
            txtContent.getWidth(),
            Layout.Alignment.ALIGN_NORMAL, 1, lineSpace, false);
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么 TextView 和 EditText 中的文本渲染不同,以及如何使用 StaticLayout 测量文本并将文本设置为 TextView,以便每行的开始和结束偏移量与用户在 setText 后看到的结果完全匹配

android textview staticlayout

5
推荐指数
1
解决办法
188
查看次数

什么是过时的StaticLayout的替代品

应该用什么代替:

StaticLayout layout = new StaticLayout(text, paint, width, Alignment.ALIGN_NORMAL, mSpacingMult, mSpacingAdd, false);
Run Code Online (Sandbox Code Playgroud)

发出以下警告:

警告:已弃用StaticLayout中的[不推荐使用] StaticLayout(CharSequence,TextPaint,int,Alignment,float,float,boolean)StaticLayout layout = new StaticLayout(文本,paint,宽度,Alignment.ALIGN_NORMAL,mSpacingMult,mSpacingAdd,false);

android android-layout staticlayout

5
推荐指数
1
解决办法
1332
查看次数

Android Layout:getLineBaseline、getLineDescent、getLineAscent、getLineBottom、getLineTop的含义

出于以下几个方法的文档Layout(包括StaticLayoutDynamicLayout,和BoringLayout)非常sparce。

这些方法返回的数字究竟是多少?它们是正常的字体度量值还是布局上的位置?

我做了一个测试项目来找出答案,所以我在问答风格下面发布了我的答案。

android fontmetrics staticlayout dynamiclayout

1
推荐指数
1
解决办法
771
查看次数