我的Android 4应用程序通过向textviewsa 添加多个来生成长视图linearlayout.这适用于我的所有列表项,除了一个.问题是,textviews添加第一个之后的中止列表textview,但没有异常被抛出!
我只是在LogCat中看到这个警告:
TextLayoutCache | computeValuesWithHarfbuzz - 需要强制单次运行
有谁知道这意味着什么?
Ani*_*han 14
HarfBuzz是OpenType字体的布局/整形引擎.其目的是在开源项目中标准化文本布局.那个警告,可以追溯到android/graphics/TextLayoutCache.cpp.
相关代码块是:
ubidi_setPara(bidi, chars, contextCount, bidiReq, NULL, &status); //runs the algorithm
int paraDir = ubidi_getParaLevel(bidi) & kDirection_Mask; // 0 if ltr, 1 if rtl
if (U_SUCCESS(status) && rc == 1) {
// Normal case: one run, status is ok
isRTL = (paraDir == 1);
useSingleRun = true;
} else if (!U_SUCCESS(status) || rc < 1) {
LOGW("computeValuesWithHarfbuzz -- need to force to single run");
isRTL = (paraDir == 1);
useSingleRun = true;
} else {...}
Run Code Online (Sandbox Code Playgroud)
这部分代码是BiDi算法(uBiDi)的一部分,代表Unicode双向,详见此处.
阿拉伯语,希伯来语或其他RTL语言的数据需要处理双向文本.因为这些从右到左的脚本使用从左到右书写的数字,所以文本实际上是双向的:从右到左和从左到右文本的混合.
rc在上面是算法的运行计数.每个unicode字符都分配了一个级别.(即使是未分配的)
文本首先被分成不同的级别,(级别0是纯英文文本,级别1是纯阿拉伯文本,可能嵌入英语0级文本等)
现在以下列方式进行运行.
Levels: 0 0 0 1 1 1 2
Runs: <--- 1 ---> <--- 2 ---> <3>
Run Code Online (Sandbox Code Playgroud)
上例中的运行计数为3.如果BiDi算法甚至无法成功运行,则会抛出警告.可能发生许多错误,阻止算法的成功运行.其中任何一个都可以触发警告.
但是,无论警告是否发生,除了记录的警告外,代码行为完全相同.因此,它不应该影响应用程序的运行.
| 归档时间: |
|
| 查看次数: |
2530 次 |
| 最近记录: |