Ana*_*ain 13 android onclick textview onclicklistener
我想在textview上设置多次单击.我看到很多答案,但任何答案都无法帮助我.我使用这段代码制作跨区字符串: -
private SpannableStringBuilder addClickablePart(String str) {
SpannableStringBuilder ssb = new SpannableStringBuilder(Html.fromHtml(deafultSpna + feelingSpan+tagfriendspan));
ssb.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(AddPostActivity.this, "hello click",
Toast.LENGTH_SHORT).show();
}
}, 0, Html.fromHtml(deafultSpna).length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ssb.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(AddPostActivity.this, "hello click ffff",
Toast.LENGTH_SHORT).show();
}
}, Html.fromHtml(deafultSpna).length(), Html.fromHtml(deafultSpna+feelingSpan).length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
ssb.setSpan(new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(AddPostActivity.this, "hello click ffff fdsfds",
Toast.LENGTH_SHORT).show();
}
}, Html.fromHtml(deafultSpna+feelingSpan).length(), Html.fromHtml(deafultSpna+feelingSpan+tagfriendspan).length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
return ssb;
}
Run Code Online (Sandbox Code Playgroud)
但我想这样: -
我使用此代码进行跨越feelingSpan = "<font color=#414141> - Feeling </font><font color=#bd2436>" + feeling_name + "</font>";
任何人都可以帮我解决这个问题.提前致谢.
为了让事情更简单,我们可以先定义一个小类,它会使可点击的跨度变为红色,并在点击时显示相应的消息。
private class MyClickableSpan extends ClickableSpan {
String text;
MyClickableSpan(String text) {
this.text = text;
}
@Override
public void updateDrawState(TextPaint ds) {
ds.setUnderlineText(false); // get rid of underlining
ds.setColor(Color.RED); // make links red
}
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(), text, Toast.LENGTH_SHORT).show();
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,我们可以添加一个小的便捷方法来创建可点击的跨度。
private void addClickableText(SpannableStringBuilder ssb, int startPos, String clickableText, String toastText) {
ssb.append(clickableText);
ssb.setSpan(new MyClickableSpan(toastText), startPos, ssb.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
Run Code Online (Sandbox Code Playgroud)
最后,我们可以填充可生成的字符串并显示它。
TextView text = findViewById(R.id.text);
SpannableStringBuilder ssb = new SpannableStringBuilder("");
addClickableText(ssb, ssb.length(), "Abhishek Nagar", "hello click");
ssb.append(" - Feeling ");
addClickableText(ssb, ssb.length(), "Sad", "hello click ffff");
ssb.append(" with ");
addClickableText(ssb, ssb.length(), "Anand Jainb", "hello click ffff fdsfds");
text.setMovementMethod(LinkMovementMethod.getInstance()); // make our spans selectable
text.setText(ssb);
Run Code Online (Sandbox Code Playgroud)
这就是全部!