使用WebView在Android应用程序中对齐文本但是呈现类似TextView的界面?

使用WebView在Android应用程序中对齐文本但是呈现类似TextView的界面?,第1张

概述我正在寻找一种简单的方法来忘记我正在使用WebView在TextView中使用合理的文本.有人为此制作了自定义视图吗?我很清楚我可以这样做: WebView view = new WebView(this); view.loadData("my html with text justification","text/html","utf-8"); 但是当你想要设置Text 我正在寻找一种简单的方法来忘记我正在使用WebVIEw在TextVIEw中使用合理的文本.有人为此制作了自定义视图吗?我很清楚我可以这样做:
WebVIEw vIEw = new WebVIEw(this);             vIEw.loadData("my HTML with text justification","text/HTML","utf-8");

但是当你想要设置TextVIEw的大小,颜色或其他常见属性时,它会变得很难看.必须有一种更方便的方法.

解决方法@H_502_8@ 我承认,这让我神经紧张.我喜欢TextVIEws在代码中看起来像TextVIEws,即使我使用WebVIEw作为实现text-align:justifIEd格式化的手段,我也不想那样看.

我创建了一个自定义视图(丑陋,可能很糟糕),它实现了我在TextVIEw中常用的方法,并修改了WebVIEw的内容以反映这些更改.
对于其他人或者我真正不知道的潜在危险它是有用的,对我来说它有效,我已经在几个项目中使用它并且没有遇到任何问题.唯一的小麻烦是我认为它是一个更大的收费记忆,但如果它只是一两个就没有什么可担心的(如果我错了,请纠正我).

结果如下:

以编程方式设置它的代码就像这样简单:

JustifIEdTextVIEw J = new JustifIEdTextVIEw();                   J.setText("insert your text here");

当然,保留它是愚蠢的,所以我还添加了改变字体大小和字体颜色的方法,这些方法基本上都是我使用的TextVIEws.意思是我可以这样做:

JustifIEdTextVIEw J = new JustifIEdTextVIEw();                   J.setText("insert your text here");                   J.setTextcolor(color.RED);                   J.setTextSize(30);

并获得以下结果(图像被裁剪):

但是,这不是向我们展示它的外观,而是分享你是如何做到的!

我知道我知道.
这是完整的代码.它还解决了设置透明背景和将UTF-8字符串加载到视图中时的问题.有关详细信息,请参阅reloadData()中的注释.

public class JustifIEdTextVIEw extends WebVIEw{    private String core      = "<HTML><body style='text-align:justify;color:rgba(%s);Font-size:%dpx;margin: 0px 0px 0px 0px;'>%s</body></HTML>";    private String textcolor = "0,255";    private String text      = "";    private int textSize     = 12;    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;        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),"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",r,g,b,a);         reloadData();    }    public voID setBackgroundcolor(int hex){        backgroundcolor = hex;        reloadData();    }    public voID setTextSize(int textSize){        this.textSize = textSize;        reloadData();    }}
总结

以上是内存溢出为你收集整理的使用WebView在Android应用程序中对齐文本但是呈现类似TextView的界面?全部内容,希望文章能够帮你解决使用WebView在Android应用程序中对齐文本但是呈现类似TextView的界面?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1138298.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存