我想在我的应用程序中为TextView动态添加和删除unerline。
首先,我使用AQuery在片段的onCreateView中添加下划线:
aQuery.id(R.id.tv_help_consult).getTextView().setPaintFlags(aq.id(R.id.tv_help_consult).getTextView().getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG)
;
但是当我删除下划线(并再次添加)时,字体会发生一些事情,因此您可以看到像素:
我在clickListenner中使用这些方法来更改下划线:
private void headingFontHighlightOn(TextView heading) {
// removing underline
heading.setPaintFlags(0);
// changing color
heading.setTextColor(ContextCompat.getColor(getActivity(), R.color.orange));
}
private void headingFontHighlightOff(TextView heading) {
// making underline
heading.setPaintFlags(heading.getPaintFlags() | Paint.UNDERLINE_TEXT_FLAG);
// changing color
heading.setTextColor(ContextCompat.getColor(getActivity(), R.color.black));
}
当然,我可以使用带有<u>
标签的替代字符串资源,只需更改字符串资源即可
但我想确定这里发生的事情
编辑:以防有人需要,
我的最终解决方案是基于 Chintan Bawa 的回答
我只是修改了独立于String资源的方法(在不同的TextView上使用时):
private void headingFontHighlightOn(TextView heading) {
// removing underline
heading.setText(heading.getText().toString());
// changing color
heading.setTextColor(ContextCompat.getColor(getActivity(), R.color.orange));
}
private void headingFontHighlightOff(TextView heading) {
// making underline
String underlinedText = "<u>" + heading.getText() + "</u>";
heading.setText(Html.fromHtml(underlinedText));
// changing color
heading.setTextColor(ContextCompat.getColor(getActivity(), R.color.black));
}
我也删除了所有油漆标志。
答案 0 :(得分:0)
如果你想要下划线应该是可点击的,你可以使用可点击的范围。如果不是忽略onclick操作。你可以使用下面的代码强调你喜欢的方式
String str =“你有”+ sessionUserId.getfudiyoPointsSession() +“fudiyo积分可用。什么是fudiyo积分?”;
int index = str.indexOf(".");
TextView txtfudiyo_point = (TextView) findViewById(R.id.user_fudiyo_point);
SpannableString ss = new SpannableString(str);
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View textView) {
try {
showTermsConditions();
} catch (Exception e) {
ErrorEmail.sendEmail(UserHomeScreen.this, e);
}
}
@Override
public void updateDrawState(TextPaint ds) {
super.updateDrawState(ds);
ds.setColor(Color.RED);
ds.setUnderlineText(true);
}
};
ss.setSpan(clickableSpan, index + 2, ss.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
txtfudiyo_point.setText(ss);
txtfudiyo_point.setMovementMethod(LinkMovementMethod.getInstance());