如何向字符串的一部分添加操作 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. <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);`
我有以下文本:"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. <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);`