android中的标签用法

android中的标签用法,第1张

概述我有一个声明,我必须加上一条水平线.但是它没有得到 android的支持似乎有任何方法可以使用支持的标签在android中重新创建标签效果. String message = "Hello <br> hai<br> I am fine <hr>";tab.setText(Html.fromHtml(message)); 表明 你好 海 我很好 但没有横线. 这里HTML标签“hr”不起作用.有没 我有一个声明,我必须加上一条水平线.但是它没有得到 android的支持似乎有任何方法可以使用支持的标签在androID中重新创建标签效果.

String message = "Hello <br> hai<br> I am fine <hr>";tab.setText(HTML.fromHTML(message));

表明
你好

我很好

但没有横线.

这里HTML标签“hr”不起作用.有没有办法从支持的标签添加hr标签效果.提前致谢..

解决方法 HTML.fromHTML()不支持< hr>目前标记所以你需要编写自己的标记处理程序来实现HTML.TagHandler. AndroID中的TextVIEws使用Spans进行样式设置,因此我们需要创建一个绘制水平线的Span,我们称之为HrSpan.

Java的

String HTML = "Hello <br> hai<br> I am fine <hr> And here's another line";HTMLTagHandler tagHandler = new HTMLTagHandler();Spanned styledText = HTMLCompat.fromHTML(HTML,HTMLCompat.FROM_HTML_MODE_LEGACY,null,tagHandler);textVIEw.setText(styledText);

HTMLTagHandler.java

public class HTMLTagHandler implements HTML.TagHandler {    @OverrIDe    public voID handleTag(boolean opening,String tag,Editable output,XMLReader xmlReader) {        if (tag.equals("hr")) {            handleHrTag(opening,output);        }    }    private voID handleHrTag(boolean opening,Editable output) {        final String placeholder = "\n-\n";        if (opening) {            output.insert(output.length(),placeholder);        } else {            output.setSpan(new HrSpan2(),output.length() - placeholder.length(),output.length(),Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);        }    }}

HrSpan.java

public class HrSpan extends ReplacementSpan {    @OverrIDe    public int getSize(@NonNull Paint paint,CharSequence text,int start,int end,@Nullable Paint.FontMetricsInt fm) {        return 0;    }    @OverrIDe    public voID draw(@NonNull Canvas canvas,float x,int top,int y,int bottom,@NonNull Paint paint) {        paint.setStyle(Paint.Style.stroke);        paint.setstrokeWIDth(8); // 8px tall line        int mIDdle = (top + bottom) / 2;        // Draw a line across the mIDdle of the canvas        canvas.drawline(0,mIDdle,canvas.getWIDth(),paint);    }}

科特林

val HTML = "Hello <br> hai<br> I am fine <hr> Another line here <hr><hr>"val tagHandler = HTMLTagHandler()textVIEw.text = HTMLCompat.fromHTML(HTML,tagHandler)
class HTMLTagHandler : HTML.TagHandler {    overrIDe fun handleTag(opening: Boolean,tag: String?,output: Editable?,xmlReader: XMLReader?) {        if (output == null) return        when (tag) {            "hr" -> handleHrTag(opening,output)            // Handle other Tags if needed        }    }    private fun handleHrTag(opening: Boolean,output: Editable) {        val placeholder = "\n-\n" // Makes sure the HR is drawn on a new line        if (opening) {            output.insert(output.length,placeholder)        } else {            output.setSpan(HrSpan(),output.length - placeholder.length,output.length,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE)        }    }}
class HrSpan : ReplacementSpan() {    overrIDe fun getSize(paint: Paint,text: CharSequence?,start: Int,end: Int,fm: Paint.FontMetricsInt?) = 0    overrIDe fun draw(        canvas: Canvas,x: float,top: Int,y: Int,bottom: Int,paint: Paint    ) {        paint.style = Paint.Style.stroke        paint.strokeWIDth = 8f        // Draw line in the mIDdle of the available space        val mIDdle = ((top + bottom) / 2).tofloat()        canvas.drawline(0f,canvas.wIDth.tofloat(),paint)    }}

这会给你一个像这样的结果.它匹配TextVIEw的宽度,因此如果您希望线占据整个宽度,请将TextVIEw wIDth属性更改为match_parent.

总结

以上是内存溢出为你收集整理的android中的标签用法全部内容,希望文章能够帮你解决android中的标签用法所遇到的程序开发问题。

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

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

原文地址:https://www.54852.com/web/1122983.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存