2015-12-22 9 views
5

Ich möchte gerechtfertigte Textformat in TextView verwenden, so erstellte ich class JustifiedTextView extends WebView.Ändern Schriftart Schriftart Text

Aber ich kann kein externes Typeface einstellen.

Ich versuchte setTypeface in meinem Code, es gibt keinen Fehler, aber Typeface ist nicht in TextView festgelegt.

Änderungen in Bezug auf Typeface in meiner Klasse?

.XML

<com.example.Model.JustifiedTextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceMedium" 
    android:id="@id/article_decription" /> 

JustifiedTextView.Java

public class JustifiedTextView extends WebView { 

    private String core = "<html><body style='text-align:justify;color:rgba(%s);font-size:%dpx;margin: 10px 10px 10px 10px;'>%s</body></html>"; 
    private String textColor = "0,0,0,255"; 
    private String text = ""; 

    String fontBody = "fonts/AvenirLTStd-Book.otf"; 

    Typeface typeFace = Typeface.createFromAsset(getContext().getAssets(), fontBody); 
    private int textSize = 18; 
    private int backgroundColor = Color.TRANSPARENT; 
    public JustifiedTextView(Context context, AttributeSet attrs){ 
     super(context, attrs); 
     this.setWebChromeClient(new WebChromeClient() { 
     }); 
    } 

    public void setText(String s) { 
     this.text = s; 
     // this.setPadding(10, 10, 10, 10); 
     reloadData(); 
    } 

    @SuppressLint("NewApi") 
    private void reloadData() { 
     // loadData(...) has a bug showing utf-8 correctly. That's why we need 
     // to set it first. 
     // this.getSettings().setDefaultTextEncodingName("utf-8"); 

     this.loadData(String.format(core, textColor, textSize, text, typeFace), "text/html", "utf-8"); 
     // set WebView's background color *after* data was loaded. 
     super.setBackgroundColor(backgroundColor); 
     // Hardware rendering breaks background color to work as expected. 
     // Need to use software renderer in that case. 
     if (android.os.Build.VERSION.SDK_INT >= 11) 
      this.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null); 
    } 

    public void setTextColor(int hex) { 
     String h = Integer.toHexString(hex); 
     int a = Integer.parseInt(h.substring(0, 2), 16); 
     int r = Integer.parseInt(h.substring(2, 4), 16); 
     int g = Integer.parseInt(h.substring(4, 6), 16); 
     int b = Integer.parseInt(h.substring(6, 8), 16); 
     textColor = String.format("%d,%d,%d,%d", r, g, b, a); 
     reloadData(); 
    } 

    public void setBackgroundColor(int hex) { 
     backgroundColor = hex; 
     reloadData(); 
    } 

    public void setTextSize(int textSize) { 
     this.textSize = textSize; 
     reloadData(); 
    } 

    public void setTypeFace(Typeface typeFace){ 
     this.typeFace=typeFace; 
     reloadData(); 
    } 
} 

MainActivity.Java

Typeface typeFontBody = Typeface.createFromAsset(getAssets(), fontBody); 
JustifiedTextView Description; 
Description = (JustifiedTextView)itemView.findViewById(R.id.article_decription); 
Description.setTypeFace(typeFontBody); 
Description.setText("Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book"); 
+1

gibt es eine Bibliothek für justifyying textview Verwenden Sie es kann das helfen Ich habe nicht das lin k, aber diese Gradel Linie für diese Bibliothek 'kompilieren 'com.github.bluejamesbond: textjudeify-android: 2.1.1'' –

+0

@VivekMishra richtig gesetzt' Fonts' Verzeichnis –

+1

Ja mein Code funktioniert perfekt mit dieser Bibliothek –

Antwort

4

Android Text Volle Jusiftication/Wrapping/Begründen/Hyphenate - V2.0 https://github.com/bluejamesbond/TextJustify-Android

build.grade

dependencies { 

    compile 'com.github.bluejamesbond:textjustify-android:2.1.1' 
} 

.XML

<com.bluejamesbond.text.DocumentView xmlns:ext="http://schemas.android.com/apk/res-auto" 
             android:layout_width="fill_parent" 
             android:layout_height="fill_parent" 
             ext:documentView_antialias="true" 
             ext:documentView_cacheConfig="auto_quality" 
             ext:documentView_hyphen="-" 
             ext:documentView_insetPadding="10dp" 
             ext:documentView_insetPaddingBottom="10dp" 
             ext:documentView_insetPaddingLeft="10dp" 
             ext:documentView_insetPaddingRight="10dp" 
             ext:documentView_insetPaddingTop="10dp" 
             ext:documentView_lineHeightMultiplier="2.0" 
             ext:documentView_maxLines="100" 
             ext:documentView_offsetX="10dp" 
             ext:documentView_offsetY="10dp" 
             ext:documentView_progressBar="@id/progressBarXml" 
             ext:documentView_reverse="false" 
             ext:documentView_text="@string/xml_test_data" 
             ext:documentView_textAlignment="justified" 
             ext:documentView_textColor="@android:color/white" 
             ext:documentView_textFormat="plain" 
             ext:documentView_textSize="12sp" 
             ext:documentView_textStyle="bold|strikeThru|underline" 
             ext:documentView_textSubPixel="true" 
             ext:documentView_textTypefacePath="fonts/helvetica.ttf" 
             ext:documentView_wordSpacingMultiplier="5.0"/> 

MainActivity.Java

DocumentView Description; 
Description = (DocumentView) itemView.findViewById(R.id.article_decription); 
Description.setText("TEXT"); 
+0

So endlich thayu k baki che? – Piyush

+1

@PiyushGupta Ja! Es ist fertig!! –