我有一个休闲文本:“通过单击OK,您将禁用该服务。了解更多信息”。
我想使“学习更多”点击,但我希望弹出菜单出现,而不是指向一个网站。
我使用了休闲堆栈问题:How to set the part of the text view is clickable
效果很好。我通过".“找到了学得更多的索引。此解决方案使应用程序在中文和印地语语言中崩溃(在印地语中,一个点是编写的-> \\)。
我如何使“学习更多”点击通用方式显示弹出式菜单?
是否有一种方法可以在strings.xml中定义单击操作,比如调用链接?(而不是调用链接->启动弹出菜单?)
发布于 2015-10-22 08:43:45
解决了,可能是黑客,但效果很好。
在strings.xml中,我添加了
//<a></a> tags to be removed later on
<string name="learn_more">By clicking OK you will disable the service. <a>Learn more</a></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);`发布于 2015-10-22 06:21:00
您可以使用WebView和锚。创建新的WebViewClient (特别是需要此方法:shouldOverrideUrlLoading()),并在用户单击锚时执行所需的任何操作。
发布于 2015-10-22 06:26:11
可以根据定义的文本创建单击事件。看看这个图书馆..。也许能帮你..。https://github.com/klinker24/Android-TextView-LinkBuilder
https://stackoverflow.com/questions/33274446
复制相似问题