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());
這行如果沒有寫的話,觸發是不會有反應的
留言
張貼留言