支援為EditText指定任意字型大小的Hint
阿新 • • 發佈:2018-12-10
背景:
1. 按照設計師指定在EditText中要顯示的Hint太長了,導致無法顯示完整(hint內容:取現最低限額100元),效果圖如下:
2. EditText不支援設定hint的字型大小(只能和輸入框字型一致),後來在網上找到通過SpannableString設定hint,就能指定字型大小了。程式碼如下:
/** * 設定EditText的hint字型大小 * @param editText EditText控制元件 * @param hintText hint內容 * @param size hint字型大小,單位為sp */ public static void setEditTextHintWithSize(EditText editText, String hintText, @Dimension int size) { if (!TextUtils.isEmpty(hintText)) { SpannableString ss = new SpannableString(hintText); //設定字型大小 true表示單位是sp AbsoluteSizeSpan ass = new AbsoluteSizeSpan(size, true); ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); editText.setHint(new SpannedString(ss)); } }
3.但是這個方案在小米手機上出現了游標無法對齊的問題
問題截圖如下:
出現問題機型(沒有驗證小米所有機型):
1)小米6
2)紅米Note 4X
解決方案:
1.在網上找了各種方案,其中一種是定製游標,但是效果還是有問題。
2.最終在同事的建議下,採用在EditText上覆蓋一層TextView的方式,為了方便複用,對控制元件進行了封裝。
呼叫方式:
new EditTextHint(this, "RelativeLayout中為EditText新增hint", R.id.editText).showHint();
附錄:
在EditText中設定hint的大小和顏色,游標粗細和顏色:https://blog.csdn.net/qq_24697659/article/details/49800419 EditText 程式碼設定游標顏色(反射):https://blog.csdn.net/qq_30247473/article/details/50422245 小米手機EditText游標問題:https://www.jianshu.com/p/c92299664933