Android-есть ли возможность добавить кликабельную ссылку в строковый ресурс - PullRequest
33 голосов
/ 09 февраля 2012

Обычно я настраиваю какое-то AlertDialog для запуска, когда пользователь впервые использует одно из моих приложений, и я объясняю, как использовать приложение, и даю общее представление о том, что они только что загрузили.Я также обычно загружаю свои строки из файла strings.xml.

Я хочу сделать одно из слов в моем строковом ресурсе кликабельным, как гиперссылка на веб-странице.По сути, у вас будет AlertDialog, а внутри строкового ресурса будет выделенное слово или, возможно, просто веб-адрес, по которому они смогут нажать.Я полагаю, я мог бы просто добавить кнопку, которая перенесла бы их на сайт, но я просто хотел узнать, возможно ли сделать слово в вашем строковом ресурсе кликабельной гиперссылкой.

Ответы [ 3 ]

56 голосов
/ 09 февраля 2012

Просто используйте ссылку в формате HTML на вашем ресурсе:

<string name="my_link"><a href="http://somesite.com/">Click me!</a></string>

Затем вы можете использовать setMovementMethod(LinkMovementMethod.getInstance()) на вашем TextView, чтобы сделать ссылку кликабельной.

Существует также атрибут TextView android:autoLink, который также должен работать.

10 голосов
/ 25 мая 2015

Я нашел что-то интересное. Дайте мне знать, если кто-нибудь из вас наблюдал это.

Ниже гиперссылка не работает, если вы используете

android:autoLink="web"

но работает с

TextView link = (TextView) findViewById(R.id.link);
link.setMovementMethod(LinkMovementMethod.getInstance());

<string name="my_link">
    <a href="/4276546/android-est-li-vozmozhnost-dobavit-klikabelnuy-ssylku-v-strokovyi-resurs">
        Click me!
    </a>
</string>

но если вы воспользуетесь следующей ссылкой, она будет работать как с

android:autoLink="web" (or)
TextView link = (TextView) findViewById(R.id.link);
link.setMovementMethod(LinkMovementMethod.getInstance());

<string name="my_link">
    <a href="/4276546/android-est-li-vozmozhnost-dobavit-klikabelnuy-ssylku-v-strokovyi-resurs"> 
        /4276546/android-est-li-vozmozhnost-dobavit-klikabelnuy-ssylku-v-strokovyi-resurs
    </a>
</string>
4 голосов
/ 09 февраля 2012

Android не делает строки, содержащие действительные ссылки, автоматически активируемыми. Что вы можете сделать, это добавить пользовательский вид в ваш диалог и использовать WebView для отображения сообщения с предупреждением. В этом случае вы можете хранить html в своих ресурсах, и они будут активными.

View alertDialogView = LayoutInflater.inflate(R.layout.alert_dialog_layout, null);

WebView myWebView = (WebView) alertDialogView.findViewById(R.id.dialogWebView);
myWebView.loadData("<a href=\"http://google.com\">Google!</a>", "text/html", "utf-8");
AlertDialog.Builder builder = new AlertDialog.Builder(MyActivity.this);
builder.setView(alertDialogView);

alert_dialog_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:orientation="vertical">
<WebView android:id="@+id/dialogWebView" android:layout_height="wrap_content"
    android:layout_width="wrap_content" />
...