テキストを揃えるためにWebView
を使用しています。私は知りたいです-
layout
ファイルにテキストサイズを設定することはできますか?画面サイズごとに異なるテキストサイズが必要なため。
また、1つの問題は、最初に背景が表示され、2秒後にテキストが表示されることです。すぐにテキストを表示することは可能ですか?
テキストのサイズは7〜8行。
コード-
public class Main extends Activity {
WebView mWebView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
String text = "<html><body>"+"<p align=\"justify\">"+getString(R.string.itext)+"</p>"+"</body></html>";
mWebView .loadData(text, "text/html", "utf-8");
mWebView .setBackgroundColor(Color.TRANSPARENT);
}
}
Xml-
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:orientation="vertical"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:background="@drawable/light">
<WebView
Android:id="@+id/webview"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:background="@Android:color/transparent"/>
</LinearLayout>
レイアウトからテキストサイズを設定するには
final WebSettings webSettings = web.getSettings();
Resources res = getResources();
fontSize = res.getDimension(R.dimen.txtSize);
webSettings.setDefaultFontSize((int)fontSize);
即時テキスト表示用
webSettings.setRenderPriority(RenderPriority.HIGH);
webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
webSettings.setAppCacheEnabled(false);
webSettings.setBlockNetworkImage(true);
webSettings.setLoadsImagesAutomatically(true);
webSettings.setGeolocationEnabled(false);
webSettings.setNeedInitialFocus(false);
webSettings.setSaveFormData(false);
値フォルダー内
<resources>
<dimen name="txtSize">26sp</dimen>
</resources>
それがうまくいくことを願っています。
WebSettings webSettings = webView.getSettings();
setTextSizeまたは
webSettings.setTextSize(WebSettings.TextSize.SMALLEST);
これも機能します:
webSettings.setDefaultFontSize(10);
そしてすぐにテキストを表示します:
webview.getSettings().setRenderPriority(RenderPriority.HIGH);
webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webview.setBlockNetworkImage(true);
webview.setLoadsImagesAutomatically(true);
webwebviewSettings.setGeolocationEnabled(false);
webview.setNeedInitialFocus(false);
webview.setSaveFormData(false);
これがあなたが探しているものかどうかはわかりませんが、テキストの幅/高さの計算に基づいてテキストサイズを設定したくない限り、これはあなたが探しているものでなければなりません:
WebSettings settings = yourWebView.getSettings();
これにより、テキストサイズを変更しようとしているWebView
の設定を取得できます。
たとえば、TextSize
クラスを使用してサイズとして設定できる定義済みの値がいくつかあります。
settings.setTextSize(TextSize.SMALLEST);
settings.setTextSize(TextSize.SMALLER);
settings.setTextSize(TextSize.NORMAL);
settings.setTextSize(TextSize.BIGGER);
settings.setTextSize(TextSize.BIGGEST);
選択した現在のデバイスのパラメーターに応じて、設定する必要があるものを選択するだけです。
それどころか、何らかのスクリーン幅/高さの計算を行い、結果を特定の値に設定したい場合は、これを使用することもできます:
settings.setDefaultFontSize(an_integer_that_goes_between_1_and_72);
----編集----
WebView
レンダリングを強化するには、次を試してください。
mWebView.getSettings().setRenderPriority(RenderPriority.HIGH);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
Manifest
ファイルにこれを追加することもできます:
Android:hardwareAccelerated="true"
FontSize
にWebView
を設定するには3つの方法があります。
1)WebView.setDefaultFontSize(int)
webview.setDefaultFontSize(50);
2)WebView.getSettings()。setTextSize(WebSettings.TextSize.SMALLEST)
WebView.getSettings().setTextSize(TextSize.SMALLEST);
または
WebView.getSettings().setTextSize(TextSize.SMALLER);
または
WebView.getSettings().setTextSize(TextSize.NORMAL);
または
WebView.getSettings().setTextSize(TextSize.BIGGER);
または
WebView.getSettings().setTextSize(TextSize.BIGGEST);
3)html形式でfont-sizeを追加します。
String text = "<html><body style=\"color:black;font-family:Helvetica;font-size:12px;\"'background-color:transparent' >"+"<p align=\"justify\">"+getString(R.string.itext)+"</p>"+"</body></html>";
1-すべてのデバイスで良い結果が得られるこのコードを使用しています。
WebがWebViewの場合、
web = (WebView) v.findViewById(R.id.htmlDisplay);
// Impostazioni della WebView.
final WebSettings webSettings = web.getSettings();
// Set the font size (in sp).
webSettings.setDefaultFontSize(20);
OK、これはハードコードされています
今、より動的なソリューション(あなたの質問による):
必要なサイズを整数ファイル(サポートしている画面ごとに1つ)に入れると、その値を取得することができます。
Resources res = getResources();
float fontSize = res.getInteger(R.integer.font_size);
webSettings.setDefaultFontSize(fontSize);
Res/values/integers.xmlファイルが次のようになっていると仮定します。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="font_size">20</integer>
</resources>
したがって、上記のコードのこの行を変更します
webSettings.setDefaultFontSize(20);
に
webSettings.setDefaultFontSize(fontSize);
2-より高速に物事をロードするには、次のコードを使用します
// Optimize loading times.
webSettings.setAppCacheEnabled(false);
webSettings.setBlockNetworkImage(true);
webSettings.setLoadsImagesAutomatically(true);
webSettings.setGeolocationEnabled(false);
webSettings.setNeedInitialFocus(false);
webSettings.setSaveFormData(false);
7〜8行以上のテキストを読み込むことに注意してください。これは、セクションを展開/縮小するためのJavaScriptを備えた完全なHTMLページです。そして、ロードに0.5秒かかります。したがって、7〜8行のテキストがフラッシュにロードされると思います。
いつでもCSSを使用してフォントサイズを変更できます。
String text = "<html><style type=\"text/css\">p{text-align:justify;font-size:80%;}</style></head><body>"+"<p>"+getString(R.string.text1)+"</p>"+"</body></html>";
mWebView.loadData(text, "text/html", "utf-8");
Digvesh Patelが以前に言ったように、より致命的になるために:
webview.getSettings().setRenderPriority(RenderPriority.HIGH);
webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
Kotlinでは、この行を追加するだけです。
webview.settings.defaultFontSize = yourSizeInInteger
Html.fromHtml()
を使用して、HTML
形式でテキストを記述できます。