2016-12-24 5 views
1

Я хотел оправдать текст TextView, но не смог найти способ сделать это на TextView, поэтому создал WebView.Как я могу правильно обосновать текст в WebView на Android?

Код для установки текста на моем WebView является следующее:

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); 

И это хорошо работает, текст является показать оправданным (потому что я создал body тег с style="text-align:justify;).

Проблема заключается в том, что, поскольку я загрузил текст в WebView, он проводит несколько секунд, чтобы зарядить текст. Поэтому остальная часть макета отображается до появления текста, создавая странный визуальный эффект.

Я попытался подождать до полной загрузки WebView (How to listen for a WebView finishing loading a URL?), но текст никогда не отображается. Вот код, который у меня есть на данный момент:

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); 
    } 
}); 

Итак, как я могу показать выравнивание текста в то же время, как остальной части макета?

Заранее благодарен!

+1

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

+0

Duplicate Question of: http://stackoverflow.com/questions/1292575/android-textview-justify-text – tahaDev

+0

@tahaDev Я не думаю, что это дубликат этот вопрос. Я знаю, как оправдывать текст. Я задаю вопрос о конкретной проблеме. –

ответ

0

это изображение: enter image description here

это код, который я использовал в моем проекте оно не занимает так много, чтобы загрузить

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); 
} 

это XML:

<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> 

вы можете использовать свой шрифт вместо этого. Надеюсь, это помогло.