Multiple Clickable links in TextView on Android

后端 未结 8 745
无人共我
无人共我 2020-12-14 07:16

I\'m trying to add multiple links in a textview similar to what Google & Flipboard has done below with their Terms and conditions AND Privacy Po

8条回答
  •  温柔的废话
    2020-12-14 07:59

    The best way to do this is with string file

    In string.xml

    I agree to the %1$s and %2$s
    Terms of Service
    Privacy Policy
    

    In onCreateView call below method

    private void setTermsAndCondition() {
        String termsOfServicee = getString(R.string.terms_of_service);
        String privacyPolicy = getString(R.string.privacy_policy);
        String completeString = getString(R.string.agree_to_terms, termsOfServicee,privacyPolicy);
        int startIndex = completeString.indexOf(termsOfServicee);
        int endIndex = startIndex + termsOfServicee.length();
        int startIndex2 = completeString.indexOf(privacyPolicy);
        int endIndex2 = startIndex2 + privacyPolicy.length();
        SpannableStringBuilder spannableStringBuilder = new SpannableStringBuilder(completeString);
        ClickableSpan clickOnTerms = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                Toast.makeText(this, "click on terms of service", Toast.LENGTH_SHORT).show();
            }
    
            @Override
            public void updateDrawState(TextPaint ds) {
                ds.setColor(ContextCompat.getColor(this, R.color.blue));
    
            }
        };
        ClickableSpan clickOnPrivacy = new ClickableSpan() {
            @Override
            public void onClick(View widget) {
                Toast.makeText(this, "click on privacy policy", Toast.LENGTH_SHORT).show();
            }
    
            @Override
            public void updateDrawState(TextPaint ds) {
                ds.setColor(ContextCompat.getColor(this, R.color.blue));
    
            }
        };
        spannableStringBuilder.setSpan(clickOnTerms, startIndex, endIndex, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        spannableStringBuilder.setSpan(clickOnPrivacy, startIndex2, endIndex2, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        yourTextView.setText(spannableStringBuilder);
        yourTextView.setMovementMethod(LinkMovementMethod.getInstance());
    }
    

提交回复
热议问题