Android的EditText属性android:maxLength失效

今天有个项目需要设置EditText的android:maxLength,我在xml里面写好了,然后一试,竟然发现不行,然后我就发现,因为未设置了EditText禁止输入Emoji

 		//做Emoji表情过滤
        editText.setFilters(new InputFilter[]{new EmojiFilterUtils()});

这会导致设置android:maxLength失效
所以只要添加一句就好了

		//限制输入框只能输入20个字
        editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(20)});

可以合并简写成

		mRybsCauseEdit.setFilters(new InputFilter[]{new EmojiFilterUtils(), new InputFilter.LengthFilter(20)});

附上过滤Emoji表情的函数

/**
 * 区分Emoji表情
*/
public class EmojiFilterUtils implements InputFilter {


    @Override
    public CharSequence filter(CharSequence source, int start, int end,
                               Spanned dest, int dstart, int dend) {
        StringBuffer buffer = new StringBuffer();
        for (int i = start; i < end; i++) {
            char codePoint = source.charAt(i);
            if (!getIsEmoji(codePoint)) {
                buffer.append(codePoint);
            } else {
                i++;
            }
        }
        if (source instanceof Spanned) {
            SpannableString sp = new SpannableString(buffer);
            TextUtils.copySpansFrom((Spanned) source, start, end, null,
                    sp, 0);
            return sp;
        } else {
            return buffer;
        }
    }

    public boolean getIsEmoji(char codePoint) {
        if ((codePoint == 0x0) || (codePoint == 0x9) || (codePoint == 0xA)
                || (codePoint == 0xD)
                || ((codePoint >= 0x20) && (codePoint <= 0x29))
                || ((codePoint >= 0x2A) && (codePoint <= 0x3A))
                || ((codePoint >= 0x40) && (codePoint <= 0xA8))
                || ((codePoint >= 0xAF) && (codePoint <= 0x203B))
                || ((codePoint >= 0x203D) && (codePoint <= 0x2048))
                || ((codePoint >= 0x2050) && (codePoint <= 0x20e2))
                || ((codePoint >= 0x20e4) && (codePoint <= 0x2100))
                || ((codePoint >= 0x21AF) && (codePoint <= 0x2300))
                || ((codePoint >= 0x23FF) && (codePoint <= 0X24C1))
                || ((codePoint >= 0X24C3) && (codePoint <= 0x2500))
                || ((codePoint >= 0x2800) && (codePoint <= 0x2933))
                || ((codePoint >= 0x2936) && (codePoint <= 0x2AFF))
                || ((codePoint >= 0x2C00) && (codePoint <= 0x3029))
                || ((codePoint >= 0x3031) && (codePoint <= 0x303C))
                || ((codePoint >= 0x303E) && (codePoint <= 0x3296))
                || ((codePoint >= 0x32A0) && (codePoint <= 0xD7FF))
                || ((codePoint >= 0xE000) && (codePoint <= 0xFE0E))
                || ((codePoint >= 0xFE10) && (codePoint <= 0xFFFD))
                || ((codePoint >= 0x10000) && (codePoint <= 0x10FFFF))) {
            return false;
        }
        return true;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android EditText属性是指在Android应用程序中,用于定义文本输入框的属性。这些属性包括文本框的大小、颜色、字体、输入类型、提示文本等等。通过设置这些属性,可以使EditText控件更加符合应用程序的需求,提高用户体验。常用的EditText属性包括:android:hint、android:textSize、android:textColor、android:inputType等等。 ### 回答2: Android中,EditText是常用的用户输入控件,可以允许用户在应用程序中输入文本、数字等信息。EditText控件具有多种属性,如文本、密码、数字和多行等,这些属性可以通过XML或Java代码设置。 以下是常用的EditText属性: 1. android:hint:用于在EditText中显示默认提示文本。当用户输入信息时,提示文本会自动删除。 2. android:text:用于设置EditText控件中默认文本值。 3. android:inputType:控制EditText输入类型,包括text、number、phone、password等类型。 4. android:maxLength:设置EditText控件允许输入文本长度的最大值。 5. android:imeOptions:控制输入法行为的选项,例如确定按钮、搜索按钮、换行等。 6. android:singleLine:用于设置EditText控件是否只允许单行输入。 7. android:password:用于设置EditText控件是否是密码类型,显示的文本会被隐藏。 8. android:editable:用于设置EditText控件是否可编辑,设置为false时EditText会变为只读状态。 9. android:textColor:控制EditText控件中文本颜色。 10. android:background:设置EditText控件的背景颜色或背景图片。 11. android:scrollHorizontally:用于控制EditText控件中文本是否可以水平滚动。 12. android:textSize:设置EditText控件中字体大小。 总之,掌握EditText属性可以让我们更好地定制和使用这个控件,满足开发需求。 ### 回答3: Android中的EditText是一个可编辑的文本框控件,常用于用户的文字输入。EditText控件具有很多属性可以用来控制其外观和行为。 一、外观属性 1. android:background:设置EditText控件的背景颜色或者背景图片。 2. android:textColor:设置EditText控件中文字的颜色。 3. android:textColorHint:设置EditText控件中提示文字的颜色。 4. android:textSize:设置EditText控件中文字的大小。 5. android:hint:设置EditText控件中的提示文字,当用户没有输入任何内容时会显示这个提示文字。 6. android:singleLine:设置EditText控件是否只显示一行文字。如果设置为false,那么EditText控件可以显示多行文字。 7. android:padding:设置EditText控件的内边距。 8. android:maxLength:设置EditText控件的最大输入长度。 二、行为属性 1. android:inputType:设置EditText控件的输入类型,可以控制EditText控件只输入纯数字、只输入字母、只输入邮件地址等等。 2. android:imeOptions:设置输入法的选项,比如Enter键的样式和行为。 3. android:maxLines:设置EditText控件的最大行数。 4. android:editable:设置EditText控件是否可编辑,如果设置为false,那么用户将无法在EditText控件中输入任何内容。 5. android:password:设置EditText控件中输入的内容是否需要隐藏,通常用于密码输入。 6. android:selectAllOnFocus:设置当EditText控件获得焦点时是否自动选中其中的所有文字。 7. android:simeGravity:设置输入法的对齐方式,比如将输入法放在EditText控件下方或者上方等等。 8. android:imeActionLabel:设置输入法的动作标签,用户点击输入法的动作按钮时会执行这个标签所对应的操作。 以上就是Android EditText控件的一些常用属性。在实际开发过程中,根据不同的需求,我们可以根据具体情况来使用这些属性来优化EditText控件的外观和行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值