I want to use a legitimate text format in a TextView , so I created the class JustifiedTextView extends WebView .
But I can not install an external Typeface .
I tried setTypeface in my code, it does not give any error, but Typeface not installed in TextView .
Any changes related to Typeface in my class?
.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 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 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 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");