29

WebViewテキストを正当化するために使用しています。私は知りたいです-

  1. ファイルにテキストサイズを設定することはできlayoutますか? 画面サイズごとに異なるテキストサイズが必要なため。

  2. また、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>
4

10 に答える 10

62

レイアウトからテキストサイズを設定するには-

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>

それがうまくいくことを願っています。

于 2014-02-22T10:48:24.193 に答える
20
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);
于 2014-02-17T05:07:00.673 に答える
8

これがあなたが探しているものかどうかはわかりませんが、テキストの幅/高さの計算に基づいてテキストサイズを設定したくない限り、これはあなたが探しているものです:

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"
于 2014-02-15T16:32:41.610 に答える
7

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 行のテキストが一瞬で読み込まれると思います。

于 2014-02-15T18:54:25.387 に答える
6

FontSizeオンにする方法は 3 つありWebViewます。

1) WebView.setDefaultFontSize(整数)

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>"; 
于 2014-02-21T05:55:45.133 に答える