读取html带自定义标签问题,TagHandler

昵__称 昵__称 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我接受一个html"<g color='blue'>自定义</g>"
用Html.fromHtml()显示。
可是读取不到属性
public class MainActivity extends Activity {
TextView tv1;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv1 = (TextView) findViewById(R.id.tv1);
String s = "<g color='blue'>自定义</g>";
tv1.setText(Html.fromHtml(s, null, new GameTagHandler()));
tv1.setMovementMethod(LinkMovementMethod.getInstance());
}

public class GameTagHandler implements TagHandler {
private int startIndex = 0;
private int stopIndex = 0;

@Override
public void handleTag(boolean opening, String tag, Editable output, XMLReader xmlReader) {
if (tag.toLowerCase().equals("g")) {
if (opening) {
startGame(tag, output, xmlReader);
} else {
endGame(tag, output, xmlReader);
}
}
}

public void startGame(String tag, Editable output, XMLReader xmlReader) {
String cc;
try {
cc = (String) xmlReader.getProperty("color");
} catch (SAXNotRecognizedException e) {
e.printStackTrace();
} catch (SAXNotSupportedException e) {
e.printStackTrace();
}
startIndex = output.length();
}

public void endGame(String tag, Editable output, XMLReader xmlReader) {
stopIndex = output.length();
output.setSpan(new GameSpan(), startIndex, stopIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
String cc;
try {
cc = (String) xmlReader.getProperty("color");
} catch (SAXNotRecognizedException e) {
e.printStackTrace();
} catch (SAXNotSupportedException e) {
e.printStackTrace();
}
}

private class GameSpan extends ClickableSpan implements OnClickListener {

@Override
public void onClick(View v) {
Log.e("asdf", "sdsdfs");
}
}
}
}

求解
...全文

相关推荐

评论 9
收藏 已收藏
分享
返回顶部
昵__称
Android 80,489 成员 91,375 内容