android 代码设置EditText的hint字符
今天,簡單講講android里如何在代碼里設置
EditText的hint字符。
之前,我一般是直接在xml文件設置EditText 的hint字符,后來需要在代碼里修改hint字符,發現自己居然不知道怎么實現,在網上搜索資料后,終于解決了這個問題。這里記錄一下。
其實也很簡單:
1.xml文件中設置Ediitext的提示文字
? ?android:hint="請輸入"
2.xml文件中設置Ediitext的提示文字的顏色
? ?android:textHintColor="#fff"
3.代碼實現改變Edittext提示的文字
et_name = (EditText) findViewById(R.id.et_name);SpannableString s = new SpannableString("你好呀 小美人");//這里輸入自己想要的提示文字et_name.setHint(s);其實et_name.setHint(s);?就可以設置hint的字符,可以直接傳入String設置。
4.代碼實現改變Edittext提示的文字的大
/*** EditText 控件** @param hintContent hint 內容* @param hintSize hint 內容size*/public static void setEditTextHintSize(EditText editText, String hintContent, int hintSize) {// 設置hint字體大小SpannableString ss = new SpannableString(hintContent);AbsoluteSizeSpan ass = new AbsoluteSizeSpan(hintSize, true);ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);// 設置hinteditText.setHint(new SpannedString(ss)); // 一定要進行轉換,否則屬性會消失}
這里就簡單講解了設置hing的代碼,下面講講android里對于設置hint的源碼。
TextView的源碼(EditText繼承自TextView), 發現了一些端倪,如下:
public final void setHint(CharSequence hint) {mHint = TextUtils.stringOrSpannedString(hint);if (mLayout != null) {checkForRelayout();}if (mText.length() == 0) {invalidate();}// Invalidate display list if hint is currently usedif (mEditor != null && mText.length() == 0 && mHint != null) {mEditor.invalidateTextDisplayList();} }
在方法的一開始就是對hint文本的轉換.由于hint是CharSequence類型的, 說明有希望可以增加一些自定義屬性, 我們再看TextUtils.stringOrSpannedString這個方法:
public static CharSequence stringOrSpannedString(CharSequence source) {if (source == null)return null;if (source instanceof SpannedString)return source;if (source instanceof Spanned)return new SpannedString(source);return source.toString(); }那么問題來了,我們只要傳入的hint是SpannedString或者Spanned類型,就可以保持文本的自定義屬性了嗎? 答案是肯定的! 直接上代碼:
注意最后一步,一定要進行轉換, 類型不對會被轉換為String對象,這樣自定義的額屬性就會丟失.
以下是最終效果:
簡單講講,其實setHint(CharSequence hint)代碼首先判斷傳入的是不是SpannedString,如果是,就直接設置到EditText的界面上,也會保留SpannedString的效果,如果傳入的是String或者Spanned,就會轉成String設置到EditText,這樣就只能使用默認效果。
android 代碼設置EditText的hint字符就講完了。
就這么簡單。
總結
以上是生活随笔為你收集整理的android 代码设置EditText的hint字符的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 的singleLine废
- 下一篇: android Comparator的使