我是靠谱客的博主 快乐雪碧,最近开发中收集的这篇文章主要介绍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);
// 设置hint
editText.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 used
if (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字符的全部内容,希望文章能够帮你解决android 代码设置EditText的hint字符所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部