Android 控制部分文字『大小與變色』與『該文字點擊事件』

控制部分文字『大小與變色』與『該文字點擊事件』

有時候公司的一些設計常會出現,有部分文字要大小不同,顏色不同的情況,而如果是在做註冊頁面的話,有時候還會遇到要設置點擊功能(例如本文範例的服務條款及隱私權政策)


Java

private void accpetSet() {

        String str1 = "點下完成即代表同意OO公司之";
        String str2 = "服務條款";
        String str3 = "及";
        String str4 = "隱私權政策";

        SpannableStringBuilder builder = new SpannableStringBuilder(str1 + str2 + str3 + str4);
        txt_accpet.setMovementMethod(LinkMovementMethod.getInstance());

        builder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.colorBlue)),
                str1.length(), (str1 + str2).length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
        builder.setSpan(new TextClick(), str1.length(), (str1 + str2).length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

        builder.setSpan(new ForegroundColorSpan(getResources().getColor(R.color.colorBlue)),
                (str1 + str2 + str3).length(), (str1 + str2 + str3 + str4).length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);
        builder.setSpan(new TextClick2(),  (str1 + str2 + str3).length(), (str1 + str2 + str3 + str4).length(), Spannable.SPAN_EXCLUSIVE_INCLUSIVE);

        txt_accpet.setText(builder);
    }

    /**
     * SpannableStringBuilder 
     */
    private class TextClick extends ClickableSpan{
        @Override
        public void onClick(View widget) {
            Log.e("服務條款","TextClick");
        }
    }
    private class TextClick2 extends ClickableSpan{
        @Override
        public void onClick(View widget) {
            Log.e("隱私權政策","TextClick");
        }
    }
}
要特別注意的是
txt_accpet.setMovementMethod(LinkMovementMethod.getInstance());
這行如果沒有寫的話,觸發是不會有反應的

留言

這個網誌中的熱門文章

jQuery獲取Select選擇的Text和Value(轉)

Android 在Fragment下控制輸入鍵盤

彈跳視窗iframe的運用