Android可点击跨度点击激活所有文本视图,而不仅仅是可跨度文本



下午好。你能帮我一个可点击的跨度吗?事实是,当我在源字符串的末尾分配一个可点击的子字符串时,不仅文本变得可点击,而且子字符串右侧的整个 TextView 区域也变得可点击,这对我不利(必须只有一个子字符串是可点击的。你能告诉我一些事情吗?需要为我的文本视图匹配父项。不幸的是,以编程方式将" "添加到原始字符串中也是我无法接受的。粘贴带有代码的链接:这里。我在 Dropbox 上制作了一个视频:

糟糕的工作我的程序: 保管箱

我希望它像这样工作 保管箱

我的文本视图需要以下布局

android:layout_width="match_parent"
android:layout_height="match_parent"
/>

我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.text_view);
SpannableString spanable = new SpannableString("my clickable span");
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this, "click span", Toast.LENGTH_SHORT).show();
}
};
spanable.setSpan(clickableSpan, 13, 17, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(spanable);
textView.setMovementMethod(LinkMovementMethod.getInstance());
}

使用长度设置所有文本。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.text_view);
String strService = "my clickable span";
int serviceStart = strService.indexOf("my clickable span");
int serviceEnd = serviceStart + "my clickable span".length();
SpannableString spanable = new SpannableString(strService);
ClickableSpan clickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
Toast.makeText(MainActivity.this, "click span", Toast.LENGTH_SHORT).show();
}
};
spanable.setSpan(clickableSpan, serviceStart, serviceEnd, Spanned.SPAN_INCLUSIVE_INCLUSIVE);
textView.setText(spanable);
textView.setClickable(true);  //add clickable
textView.setMovementMethod(LinkMovementMethod.getInstance());
}

相关内容

  • 没有找到相关文章

最新更新