html - 在Android中动态替换html中的字符串

标签 html android

我正在使用“loadDataWithBaseUrl(...)”将存储在 Assets 中的 html 文件加载到 Webview。其中包含一个字符串“Loading...”和一个旋转的 GIF。字符串“Loading...”是硬编码的,不会本地化。如何动态替换该字符串,以便对其进行本地化?

请帮我解决这个问题。

最佳答案

我可以想到各种解决方案:

  • 根据当前语言加载不同的 Assets 文件(使用 Locale.getDefault() 获取当前语言),这样您就可以独立翻译您的 HTML 文件。

  • 在您的 HTML 文件中使用占位符(例如#loading_message#),然后以字符串形式加载 Assets 文件,用适当的本地化消息替换所有出现的占位符 (String.replaceAll("#loading_message #", getText(R.string.loading_message).toString())),最后使用loadData(String data, String mimeType, String encoding)函数将处理后的HTML加载到WebView中。

要加载 Assets 文件,您可以执行类似 that 的操作:

File f = new File("file:///android_asset/my_file.html");        
FileReader fr = new FileReader(f);
BufferedReader br = new BufferedReader(fr);

StringBuffer sb = new StringBuffer();
String eachLine = br.readLine();

while(eachLine != null) {
  sb.append(eachLine);
  sb.append("\n");
  eachLine = br.readLine();
} 

// sb.toString is your HTML file as a String

关于html - 在Android中动态替换html中的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4275366/

相关文章:

javascript - 2 带有动态内容滚动后固定右面板的面板布局

javascript - 搜索 HTML 文本区域中给出的单词,并使用 JavaScript 在字符串中突出显示它们

java - 使用 MediaCodec 流解码原始 h264 会导致黑色表面

Wi-Fi无法上网时Android Lollipop默认使用Mobile Data?

android - 如何使用默认选项复制并全选以编程方式启动 textview 的上下文操作栏?

java - 无法实例化 Activity ComponentInfo; java.lang.NullPointerException

html - 如何使一个 div 位于另外两个 div 的中间以跨越多行,就像表中的 rowspan 一样

javascript - 无法在 Safari 中设置焦点

html - 百分比高度/宽度属性在显示 : -moz-box; 的父 div 时不起作用

android - 无法在 Nexus 5 中同时播放两个 MediaPlayer