今天,简单讲讲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字符相关推荐

  1. android 铃声设置失败,无法通过Android代码设置铃声

    我正在开发一个应用程序,它将随机设置用户已选择的铃声列表中的铃声.无法通过Android代码设置铃声 虽然我的代码适用于Android N及以上版本,但我遇到了Android M及以下版本的问题.我为 ...

  2. android中用代码设置edittext属性为密码,Android中EditText常用属性设置

    EditText继承关系:View–>TextView–>EditText 常用属性如下:android:layout_gravity="center_vertical" ...

  3. android 代码设置居右_Android 开发实现EditText 光标居右显示

    Android 开发实现EditText 光标居右显示 前言: 有些时候肯定会遇到这种奇葩的需求,光标要靠右显示,因为Android里面光标默认是靠左显示的,那怎么实现呢,肯定有办法的,这里提供一种实 ...

  4. android代码集EditText只要输入号码、信

     如何设置EditText,因此,只有某些数字或字母可以进入它? 一.建立EditText,只要输入号码: 办法1:直接生成DigitsKeyListener了. et_1.setKeyListe ...

  5. android 代码设置 键盘适应_详细讲解Android修改键盘文字的方法

    1.首先,针对EditText的设置 在xml布局中,针对EditText的设置. android:layout_width="match_parent" android:layo ...

  6. android代码设置maxlength,android-使用maxLength使用3个点结束TextView

    android-使用maxLength使用3个点结束TextView 我的布局中有一个TextView,它是layout_width中的wrap_content. 最多限制为15个字符,因此我正在使用 ...

  7. 【Android】设置EditText输入类型和内容长度

    1.设置输入类型 设置EditText输入类型主要有两种方法,一种是使用EditText的setInputType()方法,另一种是在布局文件中使用android:inputType属性来设置. (1 ...

  8. android 代码设置 键盘适应_Android自适应软键盘的Dialog以及监听软键盘弹起

    最近项目中遇到一个需求:新手引导.跟一般的新手引导没有什么太大区别,思路都是搞一个带阴影的遮罩层,然后在上边儿给一些提示性的文字,由于需求中有些特殊的地方,所以我用了一个全屏的dialog(而且,di ...

  9. android 代码设置圆角,Android中用Shape实现圆角和局部圆角

    本文讲解如何实现布局边框的部分圆角 大家可能都知道圆角实现其实很简单, 在drawable文件夹下新建xml文件加入以下代码 情景1: 四个角均为圆角 android:shape="rect ...

最新文章

  1. jeesite如何已生成数据的数据源_使用Jeesite进行二次开发
  2. 数据处理_流数据处理利器
  3. 成功解决FileNotFoundError: [Errno 2] No such file or directory: '/home/bai/Myprojects/Tfexamples/data/kn
  4. 12.10课堂学习----实例化、构造方法案例
  5. Handling Errors Exceptionally Well in C++ 在C++中良好地捕获意外的错误
  6. 用递归实现字符数组的反转
  7. 你真的需要全栈开发吗?
  8. qt qtableview插入进度条_Qt之QSqlTableModel的使用
  9. Oracle 19c 安装教程
  10. 人脸识别 java_利用Java调用OpenCV进行人脸识别
  11. 齿轮计算机在线,齿轮参数计算器(萝卜花齿轮计算工具)9.5 中
  12. 程序员为了讨好大舅子,竟自学自动化编程
  13. win7计算机怎么优化驱动器,win7电脑怎么优化
  14. 高等数学-多元函数微分法
  15. 于丹《庄子》心得讲稿-《大道与自然》
  16. 如何使用python画一个爱心
  17. python学法用法 自动刷分_使用python对微信小游戏跳一跳刷分
  18. js 时间格式Wed Mar 22 13:38:37 CST 2022 转为yyyy-mm-dd
  19. Centos 安装docker后 deamo 无法启动的问题 解决
  20. iphonex时间显示蓝色_遨游M5 EX敢于打出与苹果iPhone X一样的价格,有特色之处,看下...

热门文章

  1. linux系统定时任务crond入门
  2. 浅浅地谈一下随机算法【poj2454】【poj3318】
  3. 常用netbeans快捷键
  4. 【随机过程】随机过程之泊松过程的推广
  5. Spring 依赖注入方式详解
  6. 【基础】哥德巴赫猜想
  7. 设计师的就业前景分析!
  8. 算法竞赛进阶指南第一章--题解
  9. 程序员的自我修养六可执行文件的装载与进程
  10. ionic常见问题及解决方案