日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android 代码设置EditText的hint字符

發布時間:2024/4/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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類型,就可以保持文本的自定義屬性了嗎? 答案是肯定的! 直接上代碼:

EditText editText = (EditText) rootView.findViewById(R.id.et); // 新建一個可以添加屬性的文本對象 SpannableString ss = new SpannableString("喝酒就要喝一斤!"); // 新建一個屬性對象,設置文字的大小 AbsoluteSizeSpan ass = new AbsoluteSizeSpan(8,true); // 附加屬性到文本 ss.setSpan(ass, 0, ss.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); // 設置hint editText.setHint(new SpannedString(ss)); // 一定要進行轉換,否則屬性會消失

注意最后一步,一定要進行轉換, 類型不對會被轉換為String對象,這樣自定義的額屬性就會丟失.

以下是最終效果:



簡單講講,其實setHint(CharSequence hint)代碼首先判斷傳入的是不是SpannedString,如果是,就直接設置到EditText的界面上,也會保留SpannedString的效果,如果傳入的是String或者Spanned,就會轉成String設置到EditText,這樣就只能使用默認效果。


android 代碼設置EditText的hint字符就講完了。


就這么簡單。


總結

以上是生活随笔為你收集整理的android 代码设置EditText的hint字符的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。