Android使用EditText小技巧汇总

1、隐藏android中EditText自带的的下划线

android:background="@null"
或android:background="@/drawable/bg_edittext_norma.xml"

bg_edittext_norma.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <!--商品描述的可编辑框-->
    <solid android:color="#FFFFFF" />
    <corners android:radius="10dip"/>
    <stroke
        android:width="1dip"
        android:color="#BDC7D8" />
</shape>
<EditText
       style="?android:attr/textViewStyle"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:background="@null"
       android:hint="输入用户名"
       android:paddingBottom="5dip"
       android:paddingTop="5dip" />

2、让软键盘出现搜索按钮

  • 核心代码块1:

这俩个一定要设置,要不然软键盘不会出现搜索

                android:imeOptions="actionSearch"
                android:singleLine="true"
  • 核心代码块2:

Activity或者Fragment 要实现TextView.OnEditorActionListener接口

public class DrugCatalogueInquiryFragment extends GeneralSocialFragment implements TextView.OnEditorActionListener {

 private ClearEditText etDrugName;

 etDrugName = xFindViewById(R.id.et_drug_name);
 etDrugName.setOnEditorActionListener(this);

  @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        doWhichOperation(actionId);
        return true;
    }

    private void doWhichOperation(int actionId) {
        switch (actionId) {
            case EditorInfo.IME_ACTION_SEARCH:
                //隐藏项目中弹框
                hideSoftInputMethod();

                //项目中个性化操作
                getEditTextValue();
                pageno = 1;
                getMedicineListInfoForApp(name,firstWord,type,level,pageno);
                break;
            default:
                break;
        }
    }

}

3、多行EditText的时候会出现光标在中间的问题:

关键代码

android:gravity="left"
<EditText
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:minLines="5"
    android:background="#ffffff"
    android:paddingLeft="5dp"
    android:gravity="left" />

像这种。这是什么原因造成的呢?用来EdittText默认是gravity是center.就是从中间对齐。我们把他改成left啊top啊就OK了。

4、修改EditText的光标颜色

在使用EditText的XML 文件中加入一个属性:

android:textCursorDrawable="@null"
//或者
android:textCursorDrawable = "#fff000"

这个属性是用来控制光标颜色的,"@null" 是作用是让光标颜色和text color一样,当然也可以修改成你自己的颜色。

5、通过监听OnFocusChangeListener判断EditText的焦点与否

    private void initListener(){
        etDrugName.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View view, boolean b) {
                if (b){
                    TypeUtils.getInstance( getActivity() ).hideKeyboardView();
                }
            }
        });

        etDrugNameOfInitial.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View view, boolean b) {
                if (b){
                    TypeUtils.getInstance( getActivity() ).hideKeyboardView();
                }
            }
        });
    }

6、通过属性android:ellipsize来对文本内容的呈现做说明

 android:ellipsize="end"

7、通过属性android:digits来规定只能输入的值

android:digits="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

8、规定只能输入中文

  /**
     * 通过使用Android源码中的InputFilter接口
     */
    InputFilter filter = new InputFilter() {
        public CharSequence filter(CharSequence source, int start, int end,
                                   Spanned dest, int dstart, int dend) {
            for (int i = start; i < end; i++) {
                if (!isChinese(source.charAt(i))) {
                    return "";
                }
            }
            return null;
        }
    };

    /**
     * 判定输入汉字
     *
     * @param c
     * @return
     */
    public static boolean isChinese(char c) {
        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
                || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
            return true;
        }
        return false;
    }

到这里就结束啦。

以上就是Android使用EditText小技巧汇总的详细内容,更多关于Android使用EditText的资料请关注我们其它相关文章!

(0)

相关推荐

  • Android实现EditText添加下划线

    在安卓高版本,默认是有下划线的,其默认下划线的颜色是由其主题颜色来控制的! 控制如下: <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item>

  • Android实现微信朋友圈评论EditText效果

    本文主要讲解实现微信朋友圈评论EditText效果思路,供大家参考,具体内容如下 效果图 当我们点击某一天朋友圈的评论是,列表也会跟随着滑动,使得键盘刚好在我们点击的那条评论上方 getWindow().getDecorView().getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout(

  • Android EditText随输入法一起移动并悬浮在输入法之上的示例代码

    好习惯,先上图 今天在做作业的时候有这样一种需求,评论功能页面需要仿QQ或者微博类似的页面布局,Edittext固定底部,但是又能悬浮在输入法之上.百度看了好多代码,又是写监听改变布局,又是动态调整输入框的位置,很高级,但是我尝试都没有效果,也不知道是我手机的原因还是不会用人家的代码,没办法,自己动手研究. 研究结果: 一共三个点 1.文件AndroidManifest.xml里 当前页面的activity标签里加这个 android:windowSoftInputMode="adjustRes

  • Android中多个EditText输入效果的解决方式

    前言 在开发中,我们常常遇到这种情况 我们往往需要的是下面这种效果 但是如果把这些实现的代码写在Activity中会比较麻烦,影响代码美观 解决方法 于是就有了下面这个辅助类,禁用了按钮的点击事件和按钮的渐变色,可同时添加一个或者多个EditText /** * 文本输入辅助类,通过管理多个TextView或者EditText输入是否为空来启用或者禁用按钮的点击事件 */ public final class TextInputHelper implements TextWatcher { pr

  • Android EditText长按菜单中分享功能的隐藏方法

    常见的EditText长按菜单如下 oppo 小米 需求是隐藏掉其中的分享/搜索功能,禁止将内容分享到其他应用. 最终解决方案 这里先说下最终解决方案 像华为/oppo等手机,该菜单实际是谷歌系统的即没有改过源代码,像小米的菜单则是自定义,该部分的源代码改动过. 两方面修改: 1.谷歌系统自带的 通过 EditText.setCustomSelectionActionModeCallback()方法设置自定义的选中后动作模式接口,只保留需要的菜单项 代码如下 editText.customSel

  • Android EditText限制输入整数和小数的位数的方法示例

    直接上代码 新建DecimalInputTextWatcher类继承TextWatcher (代码可直接复制使用) import android.text.Editable; import android.text.InputFilter; import android.text.TextWatcher; import android.widget.EditText; /** * EditText 限制输入整数和小数 的位数 * 默认 整数位无限制,小数位 最多2位 */ public clas

  • Android自定义密码输入EditTextLayout

    本文为大家分享了Android自定义密码输入的具体代码,供大家参考,具体内容如下 布局 <?xml version="1.0" encoding="utf-8"?> <merge xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" andro

  • Android EditText每4位自动添加空格效果

    基本功能 刚拿到需求,很简单的一个功能,二话不说,很快就出来了: 完美!顺利上线! 没过几天领导拿着手机过来说:"这一堆数字在一起看着很费劲,像其他App一样,加个空格吧!" 于是就有了这个demo. 拓展功能 下面就来在基本功能上做拓展:每4位,自动添加空格. 看似很小的功能,在开发的过程中,遇到了非常多的问题与难点: EditText输入框监听死循环 输入框中的空格无法删除(删除又添加) 从中间删除一个数字产生的一系列问题 输入框光标位置的控制问题 之前踩坑的过程就不再赘述了,太心

  • Android EditText监听回车键并处理两次回调问题

    前言 我们都知道,在登面,搜索等等有EditText控件的界面上,当用户输入完内容后,点击回车键执行逻辑会有非常好的用户体验,所以今天我们来学习如何监听EditText监听回车键并处理监听时发生了两次回调问题. 代码 首先我们在xml布局中添加一个要监听的EditText <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.a

  • Android EditText追加空格、限制字符等方法示例

    前言 使用输入框时产品常常会有一些需求,比如123456789变成123-456-789或者限制一些字符的输入等等.很多时候都是网上搜索就完事了,但是每次都去搜索有点浪费时间,而且有些也不符合需求.所以自己写一篇,以后就可以吃老本了.

  • Android 登录页面的实现代码(密码显示隐藏、EditText 图标切换、限制输入长度)

    效果演示 密码显示与隐藏 方法一 if(status){ etPassword.setInputType(InputType.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_NORMAL); //显示文本 status = false; }else { etPassword.setInputType(InputType.TYPE_CLASS_TEXT | EditorInfo.TYPE_TEXT_VARIATION_PASSWORD); //隐藏

随机推荐