2016-12-24 2 views
1

Ich wollte den Text eines TextView rechtfertigen, aber ich konnte keine Möglichkeit finden, das auf der TextView zu tun, so habe ich eine WebView erstellt.Wie kann ich Text in einem WebView auf Android richtig begründen?

Der Code, den Text auf meine WebView zu setzen, ist der folgende:

WebView webview = (WebView) view.findViewById(R.id.webview); 
webview.loadData(getString(R.string.webview), "text/html; charset=utf-8", "utf-8"); 
webview.setBackgroundColor(Color.TRANSPARENT); 

Und es funktioniert gut, der Text ist, zeigen gerechtfertigt ist (weil ich ein body Tag mit style="text-align:justify; erstellt haben).

Das Problem ist, dass, wie ich den Text in die WebView geladen habe, es einige Sekunden dauert, um den Text zu laden. Daher wird der Rest des Layouts vor dem Erscheinen des Textes angezeigt, wodurch ein merkwürdiger visueller Effekt entsteht.

Ich habe versucht zu warten, bis die WebView vollständig geladen ist (How to listen for a WebView finishing loading a URL?), aber der Text wird nie angezeigt. Hier ist der Code, den ich von dem Moment habe:

webview.setWebViewClient(new WebViewClient() { 

    public void onPageFinished(WebView view, String url) { 
     webview.loadData(getString(R.string.webview), "text/html; charset=utf-8", "utf-8"); 
     webview.setBackgroundColor(Color.TRANSPARENT); 
    } 
}); 

Also, wie kann ich zeige einen Text zur gleichen Zeit wie der Rest der Anlage rechtfertigen?

Vielen Dank im Voraus!

+1

https://github.com/programingjd/justified – CommonsWare

+0

Doppelte Frage von: http://stackoverflow.com/questions/1292575/android-textview-justify-text – tahaDev

+0

@tahaDev Ich glaube nicht, es ist ein Duplikat diese Frage. Ich weiß, wie man den Text begründet. Ich frage nach einem konkreten Thema. –

Antwort

0

dies ist das Bild: enter image description here

dies ist der Code, den ich in meinem Projekt verwendet es so viel zu nehmen tut

void initVebView(WebView wvContent_Detail, String body) { 
     String HTML1 = "<html><head><style type=\"text/css\">@font-face  {font-family: MyFont;src: url(\"file:///android_asset/%s\")}body {font-family: MyFont;font-size: medium;text-align: justify; line-height: %spx;}</style></head><body dir='rtl'>"; 
    String HTML2 = "</body></html>"; 
    String HTML3 = "<span style=\"font-weight:bold\">%s<br/><br/>%s</span>"; 

    String HTML4 = "<style>img{display: inline;height: auto;max-width: 100%;</style>"; 

    String str = String.format(HTML1, "IRANSansMobile_UltraLight.ttf", 25); 


    String content = body.replace("text-align:", ""); 
    content = content.replace("font-family:", ""); 
    content = content.replace("line-height:", ""); 
    content = content.replace("dir=", ""); 
    content = content.replace("width=", "width=\"100%;\""); 

    String myHtmlString = str + content + HTML2; 

    wvContent_Detail.loadDataWithBaseURL(null, HTML4 + myHtmlString, "text/html", "UTF-8", null); 

    WebSettings webSettings = wvContent_Detail.getSettings(); 
    webSettings.setDefaultFontSize(20); 
    webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN); 
} 

dies ist die xml zu laden:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    tools:context="ir.tenthwindow.BaseModule.ui.FragmentVideo"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <WebView 
      android:id="@+id/webview_product_details" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dp" 
      android:layout_marginRight="10dp" /> 
    </ScrollView> 
    </FrameLayout> 

können Sie stattdessen Ihre Schriftart verwenden. Hoffe das half.

Verwandte Themen