Android-Is it possible to add a clickable link into a string resource

后端 未结 4 508
太阳男子
太阳男子 2021-02-01 01:27

I usually set up some kind of AlertDialog to fire off when a user first uses one of my apps and I explain how to use the app and give an overall introduction to wha

相关标签:
4条回答
  • 2021-02-01 02:01

    Just use an HTML format link in your resource:

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

    You can then use setMovementMethod(LinkMovementMethod.getInstance()) on your TextView to make the link clickable.

    There is also TextView's android:autoLink attribute which should also work.

    0 讨论(0)
  • 2021-02-01 02:05

    I found something interesting. Let me know if any of you observed this.

    Below hyperlink is not working if you use

    android:autoLink="web"
    

    but works with

    TextView link = (TextView) findViewById(R.id.link);
    link.setMovementMethod(LinkMovementMethod.getInstance());
    
    <string name="my_link">
        <a href="http://stackoverflow.com/questions/9204303/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource">
            Click me!
        </a>
    </string>
    

    but if you use the following link it works with both

    android:autoLink="web" (or)
    TextView link = (TextView) findViewById(R.id.link);
    link.setMovementMethod(LinkMovementMethod.getInstance());
    
    <string name="my_link">
        <a href="http://stackoverflow.com/questions/9204303/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource"> 
            http://stackoverflow.com/questions/9204303/android-is-it-possible-to-add-a-clickable-link-into-a-string-resource
        </a>
    </string>
    
    0 讨论(0)
  • 2021-02-01 02:05

    Android doesn't make strings that contain valid link clickable automatically. What you can do, is add custom view to your dialog and use WebView to show the alert message. In that case, you can store html in your resources and they will be clickable.

    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" />
    
    0 讨论(0)
  • 2021-02-01 02:14

    As answered by @Nikolay Elenkov In Kotlin I used it from string resources in this way (detailed way for freshers):

    in my layout place a checkbox:

    <CheckBox
            android:id="@+id/termsCB"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginHorizontal="@dimen/spacing_normal"
            android:layout_marginTop="@dimen/spacing_normal"
            android:text="@string/terms_and_conditions" />
    

    in strings.xml

    <string name="terms_and_conditions">I read and accept the <a href="http://www.spiffyshow.com/">Terms and Conditions</a></string>
    

    in my activity class inside the onCreate() method:

    termsCB.movementMethod = LinkMovementMethod.getInstance()
    
    0 讨论(0)
提交回复
热议问题