Androidの小さい機能のTextViewはただいくつかの文字を設定してクリックすることができます

1988 ワード

一、効果展示
まず効果を見てみましょう.
二、コード実装
注釈はすでに詳しく書かれていますが、tvLogingPrivacyPolicyは私が対応する場所にクリック効果を設定する必要があるTextViewで、具体的なコードは以下のように実現されています.
private void setTvLoginPrivacyPolicySpecialText() {
    //         
    tvLoginPrivacyPolicy.setText(R.string.Bylogging);
    //          
    SpannableString clickString1 = new SpannableString(getString(R.string.PrivacyPolicy));
    //            
    clickString1.setSpan(new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            //           
            forwardPrivacyPolicy();
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            //           
            ds.setColor(getResources().getColor(R.color.clickText));
        }
        // 0-->clickString1.length()               
    }, 0, clickString1.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    //               TextView 
    tvLoginPrivacyPolicy.append(clickString1);
    //               TextView
    tvLoginPrivacyPolicy.append(new SpannableString(" " + getString(R.string.And)) + " ");
    //          
    SpannableString clickString2 = new SpannableString(getString(R.string.TermsAndConditions));
    //            
    clickString2.setSpan(new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            forwardPrivacyPolicy();
        }

        @Override
        public void updateDrawState(TextPaint ds) {
            super.updateDrawState(ds);
            //    
            ds.setColor(getResources().getColor(R.color.clickText));
        }
        // 0-->clickString2.length()               
    }, 0, clickString2.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
    tvLoginPrivacyPolicy.append(clickString2);
    //              
    tvLoginPrivacyPolicy.setHighlightColor(Color.TRANSPARENT);
    //         
    tvLoginPrivacyPolicy.setMovementMethod(LinkMovementMethod.getInstance());
}