gpt4 book ai didi

javascript - Android 使用 Hyphenator.js 完全对齐和自动断字

转载 作者:行者123 更新时间:2023-11-28 03:35:33 24 4
gpt4 key购买 nike

我正在尝试使用自动连字符来完全证明 Android 中的文本。如 here 所述,我已经使用 WebView 获得了充分的理由.我已经阅读了几个关于 Android 中自动断字的主题,但没有一个适用于 WebView。我试过使用新的 CSS3 hyphens:auto(包括 -webkit-hyphens:auto),但 Android WebKit 尚不支持它。

我找到了一篇博文 here提到使用 Hyphenator JavaScript,但我不知道如何实现它(JavaScript 和 HTML 在待办事项列表中)。由于 .js 文件的大小,我不想简单地使用 webView.loadUrl("javascript:someFunction()");

这是我目前使用的代码:

public class TestWebView extends Activity {
@Override
public void onCreate (Bundle savedState) {
WebView webView;
super.onCreate(savedState);
webView = new WebView(this);
setContentView(webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.loadUrl("file:///android_asset/WorkingExample.html");
}
}

这是 HTML:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>Hyphenator.js</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<style type="text/css">
body {
width:30%;
margin-left:35%;
margin-right:35%;
}
.text {
text-align:justify;
}
</style>
<script src="Hyphenator.js" type="text/javascript"></script>
<script type="text/javascript">
Hyphenator.config({
displaytogglebox : true,
minwordlength : 4
});
Hyphenator.run();
</script>
</head>
<body>
<h1>Example of using Hyphenator.js</h1>
<h2>Deutsch</h2>
<p class="hyphenate text" lang="de">Deutschsprachige Beispieltexte haben natürlicherweise längere Wortzusammensetzungen als englischsprachige. Aber auch <span lang="en">“hyphenation”</span> ist ein ziemlich langes Kompositum.</p>
<p class="hyphenate text" lang="de">Verändern Sie die Fenstergrösse um den Effekt der Silbentrennung zu sehen.</p>
<h2>English</h2>
<p class="hyphenate text" lang="en">English words are shorter in the average then german words. <span lang="de">«Silbentrennungsalgorithmus»</span> for example is quite long.</p>
<p class="hyphenate text" lang="en">Resize the window to see hyphenation in effect.</p>
<h2>Links</h2>
<p class="hyphenate text" lang="en">Not only words but also links like <a href="http://code.google.com/p/hyphenator/">http://code.google.com/p/hyphenator/</a> are processed. But in a special manner (using zero width space).</p>
</body>
</html>

与 html 文件一起存储的是 Hyphenator.js 文件。在我的计算机浏览器中打开 HTML 文件按预期工作,但在手机上我运气不好:Computer browser (FF) vs WebView最终,我希望动态生成文本,但让它正常工作将是一个巨大的帮助。谢谢。

最佳答案

所以你在 file:///android_asset/ 中有 WorkingExample.htmlHyphenator.js ?我想你忘了下载“模式”文件夹(在你的情况下你需要 file:///android_asset 下的 de.jsen-us.js/模式/)。你可以得到它们 here .

更新:捕获你需要的一切并将其放入你的 Assets 中:

enter image description here

工作示例.html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<title>Hyphenator.js</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<script src="Hyphenator.js" type="text/javascript"></script>
<script type="text/javascript">
Hyphenator.config({
minwordlength : 4
});
</script>
</head>
<body>
<p id="text" class="hyphenate text" lang="en"></p>
</body>
</html>

主要 Activity :

public class MainActivity extends Activity {

WebView mWebView;
String mText;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mText = "English words are shorter in the average then german words. <span lang=\"de\">Silbentrennungsalgorithmus</span> for example is quite long.";

mWebView = (WebView) findViewById(R.id.mWebView);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("file:///android_asset/WorkingExample.html");
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
mWebView.loadUrl("javascript:(function() { "
+ "document.getElementById('text').innerHTML='" + mText
+ "';" + "Hyphenator.run();" + "})()");
}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

activity_main:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<WebView
android:id="@+id/mWebView"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_centerHorizontal="true" />

</RelativeLayout>

关于javascript - Android 使用 Hyphenator.js 完全对齐和自动断字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14632060/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com