UI 与视图设置
本文汇总 UI Extensions 场景下的常见视图与交互配置,包括高亮设置、夜间模式配色、本地化、RTL 阅读方向、只读模式,以及手写识别能力的启用方式等。
设置链接高亮及高亮颜色
UI Extensions 默认开启“链接高亮”。如需关闭或修改高亮颜色,可通过配置文件或 API 实现(仅支持 v6.3+)。
通过 JSON 配置
在 uiextensions_config.json 的 uiSettings 中设置:
json
{
"uiSettings": {
"highlightLink": false,
"highlightLinkColor": "#16007000"
}
}
通过 API 调用
java
// 启用/禁用链接高亮
uiExtensionsManager.enableLinkHighlight(false);
// 设置高亮颜色
uiExtensionsManager.setLinkHighlightColor(0x4b0000ff);
设置表单高亮及高亮颜色
UI Extensions 默认开启“表单高亮”。如需关闭或修改高亮颜色,可通过配置文件或 API 实现(仅支持 v6.3+)。
通过 JSON 配置
在 uiextensions_config.json 的 uiSettings 中设置:
json
{
"uiSettings": {
"highlightForm": false,
"highlightFormColor": "#2000ffcc"
}
}
通过 API 调用
java
// 启用/禁用表单高亮
uiExtensionsManager.enableFormHighlight(false);
// 设置高亮颜色
uiExtensionsManager.setFormHighlightColor(0x4b0000ff);
夜间模式颜色设置(映射模式)
可通过 API 设置映射模式的前景/背景色,并通过 setColorMode() 应用:
PDFViewCtrl.setMappingModeBackgroundColor(int)PDFViewCtrl.setMappingModeForegroundColor(int)PDFViewCtrl.setColorMode(int)
注意
若当前 ColorMode 已是 Renderer.e_ColorModeMapping / Renderer.e_ColorModeMappingGray,在修改映射色后仍需再次调用 setColorMode() 使配置生效。
若基于 UI Extensions 源码定制,可通过调整 com.foxit.uiextensions.pdfreader.impl.MainFrame.java 的 onValueChanged() 相关逻辑实现配色修改。
UI Extensions 只读模式(禁用修改)
若需禁用编辑相关交互,可通过 API 调用 UIExtensionsManager.enableModification(false) 实现:
java
mUiExtensionsManager.enableModification(false);
通知文档已修改(SetDocModified)
当通过 UI Extensions 修改了文档内容,需要通知上层 SDK 文档已变化时,可调用:
java
// 假设已初始化 UIExtensionsManager 对象
uiExtensionsManager.getDocumentManager().setDocModified(true);
启用手写(Ink)识别
UI Extensions 默认关闭手写识别。自 v9.1 起,可通过配置文件开启:
json
"uiSettings": {
"enableHandwritingRecognition": true
}
并在 Demo 层增加依赖以启用识别能力:
kotlin
implementation 'com.google.mlkit:digital-ink-recognition:18.1.0'
RTL 阅读方向:设置 Page Binding
从右到左语言(如阿拉伯语、希伯来语等)常需将装订边设置为右侧,使页面按 RTL 方式排列。
可通过 API 调用 PDFViewCtrl.setPageBinding() 在代码中更新装订边:
java
pdfViewerCtrl.setPageBinding(PDFViewCtrl.RIGHT_EDGE);
说明
Page Binding 与横向滚动配合使用效果更明显;纵向滚动时仅在开启双页模式时生效。
本地化(Localization)设置
默认情况下,UI Extensions 会根据系统语言自动切换 UI 语言(前提是对应语言已内置支持)。
如果需要使用 SDK 未内置的语言,可通过以下方式实现:
- 将 UI 文案翻译后,按 SDK 资源目录结构放入工程资源中;
- 通过修改系统语言或调用
Localization.setCurrentLanguage()使其生效。
示例:将 UI 语言设置为日语:
java
Locale locale = new Locale("ja", "JA");
Localization.setCurrentLanguage(this.getContext(), locale);