android - 如何使部分字符串文本可点击?
问题描述
单击部分 String.xml 文本时如何显示对话框?我有一个长字符串,我想让字符串的一部分在单击时显示一个对话框。
现在,我不希望文本将我带到链接;但它应该看起来像一个链接。然后,当单击文本时,它应该带我进入对话框活动。文本也不应该看起来像一个按钮。它应该看起来像一个链接文本,但它应该在单击时显示一个对话框。此外,该对话框包含一系列字符串以显示有关单击的文本的更多信息。
这是我的 String.xml
重生后,信徒有望成长(1 Pet.2:2)。这种成长来自对我们的主和救主耶稣基督(2 Pet.3:18)的认识,他是本质、实质和见证圣经(约翰福音 5:39,路加福音 24:25-27、44-47)。我们希望教导耶稣这个人,他是神的话(约翰福音 1:1-17),并通过这样做,找出他为我们做了什么,我们在他里面是谁,我们在他里面有什么。我们还通过观察向我们启示上帝的耶稣来寻找关于上帝的真理(来 1:1-3, 2 Cor.4:3-4, Col. 1:12-15)。此外,信徒被期望在他的行为中荣耀上帝(林前 10:31),他要负责并在他是谁的现实中行走。他要为上帝服务(罗 12:11)。我们祈祷您获得圣灵的智慧和启示,并在我们一起努力学习本手册时增加知识和理解力。祝福!
我想单击 (1 Pet. 2:2) 以显示一个对话框,其中包含圣经参考信息。
解决方案
像这样试试
public void makeLinks(TextView textView, String[] links, ClickableSpan[] clickableSpans) {
SpannableString spannableString = new SpannableString(textView.getText());
for (int i = 0; i < links.length; i++) {
ClickableSpan clickableSpan = clickableSpans[i];
String link = links[i];
int startIndexOfLink = textView.getText().toString().indexOf(link);
spannableString.setSpan(clickableSpan, startIndexOfLink, startIndexOfLink + link.length(),
Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
}
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(spannableString, TextView.BufferType.SPANNABLE);
}
在 onCreate() 方法中
ClickableSpan yourstringClick = new ClickableSpan() {
@Override
public void onClick(View view) {
openyourdialoghere()
}
};
makeLinks(tvLink, new String[]{"your string"}, new ClickableSpan[]{
yourstringClick
});
编辑
对于多个字符串
ClickableSpan yourstringClick2 = new ClickableSpan() {
@Override
public void onClick(View view) {
openyourdialoghere()
}
};
makeLinks(tvLink, new String[]{"your string","your string 2"}, new ClickableSpan[]{
yourstringClick,yourStringClick2
});
推荐阅读
- java - RecyclerView 如何从 onCreateView 函数中获取项目计数(Android Studio)
- typescript - TypeScript 类型,它排除了泛型参数为 `any` 的类型
- c# - 文本框为空时禁用验证
- c# - C# 获取对象值
- javascript - CSS 类添加/删除不再起作用 || 香草JS
- c# - ImageSharp 从流中获取主色
- ios - 动画让视图跳转
- struct - 试图在结构构造函数中初始化“This”指针
- python - 如何在烧瓶生产服务器中显示用户输入的博客
- vb.net - 我应该如何使用接口将应用程序的核心连接到 UI?