如何向字符串的一部分添加操作 android

how to add an action to part of a string android

我有以下文本:"By clicking OK you will disable the service. Learn more"。

我想让 "Learn more" 可以点击,但是我希望出现一个弹出菜单而不是指向一个网站

我已经使用了休闲堆栈问题: How to set the part of the text view is clickable

效果很好。我通过“.”找到了了解更多的索引。此解决方案使中文和印地语应用程序崩溃(在印地语中写有一个点 -> |)。

如何使 "Learn more" 以通用方式可点击以显示弹出菜单?

有没有办法在 strings.xml 中定义点击操作,比如调用 link? (而不是调用 link -> 启动弹出菜单?)

您可以使用 WebView 和锚点。创建新的 WebViewClient(尤其是您需要此方法:shouldOverrideUrlLoading())并在用户单击您的锚点时执行您想要的所有操作。

你可以创建一个基于你定义的文本的点击事件。检查这个库。它可能对你有帮助。。https://github.com/klinker24/Android-TextView-LinkBuilder

已解决,可能是 hack,但工作正常。

在 strings.xml 我添加了

//<a></a> tags to be removed later on
<string name="learn_more">By clicking OK you will disable the service. &#60;a&#62;Learn more&#60;&#47;a&#62;</string>

在代码中:

TextView textView= (TextView) findViewById(R.id.textViewInLayout);
textView.setMovementMethod(LinkMovementMethod.getInstance());
textView.setText(R.string.learn_more);

//indexes of the clickable text
int start = textView.getText().toString().indexOf("<a>");
int end = textView.getText().toString().indexOf("</a>");

//set the text as html to make the tags disappear 
textView.setText(Html.fromHtml(getString(R.string.learn_more)));

//make the text clickable
Spannable spannable = (Spannable) textView.getText();

ClickableSpan myClickableSpan = new ClickableSpan() {
@Override
public void onClick(View widget) {
       yourActionHere();
  }
};

// end - 3 beacuse of </a>
spannable.setSpan(myClickableSpan, start, end - 3,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);`