1. 程式人生 > >支援為EditText指定任意字型大小的Hint

支援為EditText指定任意字型大小的Hint

背景:

    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