У меня есть следующий текст: «Нажав ОК, вы отключите службу. Подробнее».

Я хочу сделать "Подробнее" интерактивным, но я хочу, чтобы появлялось всплывающее меню вместо перехода на веб-сайт

Я использовал следующий вопрос о стеке: Как установить часть текстового представления кликабельно

Который отлично работал. я нашел указатель узнать больше по ".". это решение приводит к сбою приложения на китайском и хинди языках (на хинди пишется точка -> |).

Как сделать так, чтобы «Подробнее» можно было щелкнуть обычным способом, чтобы отобразить всплывающее меню?

Может быть, есть способ определить действие щелчка в strings.xml, например, вызвать ссылку? (вместо вызова ссылки -> запустить всплывающее меню?)

0
BennyP 22 Окт 2015 в 09:13

3 ответа

Лучший ответ

Решил это, может быть взлом, но он отлично работает.

В 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);`
0
BennyP 22 Окт 2015 в 08:43

Вы можете создать событие щелчка на основе заданного вами текста .. Проверьте эту библиотеку .. это может вам помочь .. https://github.com/klinker24/Android-TextView-LinkBuilder

0
Brendon 22 Окт 2015 в 06:26

Вы можете использовать WebView и якорь. Создайте новый WebViewClient (особенно вам нужен этот метод: shouldOverrideUrlLoading()) и делайте все, что хотите, когда пользователь щелкнет вашу привязку.

0
Artur Szymański 22 Окт 2015 в 06:21