美文网首页Android充电站
EditText 相关知识点集锦

EditText 相关知识点集锦

作者: 86cf4d336efc | 来源:发表于2017-05-19 11:59 被阅读34次

一、默认获取焦点后全选文字

获得焦点即全选

代码:edit.setSelectAllOnFocus(true);
xml配置:Android:selectAllOnFocus="true"

二、自定义AlertDialog软件盘弹不出解决办法

    AlertDialog.Builder builder = new AlertDialog.Builder(OrderDetailActivity.this);
    final AlertDialog dialog = builder.create();

    View view = LayoutInflater.from(OrderDetailActivity.this).inflate(R.layout.alert_dialog_confirm_price,null);
    final EditText etOrderPrice = (EditText) view.findViewById(R.id.et_order_price_alert_dialog);
    TextView adCancel = (TextView) view.findViewById(R.id.tv_cancel_alert_dialog);
    TextView adConfirm = (TextView) view.findViewById(R.id.tv_confirm_alert_dialog);

    //dialog.setView加上这句话软键盘就可以弹出来了
    dialog.setView(getLayoutInflater().inflate(R.layout.alert_dialog_confirm_price,null));
    dialog.show();

    //延迟300毫秒弹出软件盘
    Timer timer = new Timer();
    timer.schedule(new TimerTask() {
        public void run() {
            InputMethodManager inputManager = (InputMethodManager) etOrderPrice.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
            inputManager.showSoftInput(etOrderPrice, 0);
        }
    }, 300);

    //设置宽度
    WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
    lp.width = Utils.dp2px(OrderDetailActivity.this,320) ;

    dialog.getWindow().setContentView(view);
    dialog.getWindow().setAttributes(lp);

三、让EditText默认不获取焦点

在EditText的父控件设置这两个属性:

android:focusable="true"   
android:focusableInTouchMode="true"

如:

<RelativeLayout
  style="@style/TitleTopBackgroundStyle"
  android:focusable="true"
  android:focusableInTouchMode="true"
  >

  <ImageView
      style="@style/TitleTopBackStyle"
      android:src="@mipmap/back" />

  <!--搜索框-->
  <EditText
      android:id="@+id/tv_search_widget"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:layout_centerHorizontal="true"
      android:layout_centerVertical="true"
      android:layout_marginRight="10dp"
      android:background="@drawable/shape_rect_search_background"
      android:hint="搜索书籍"
      android:paddingBottom="5dp"
      android:paddingLeft="30dp"
      android:paddingRight="70dp"
      android:paddingTop="5dp"
      android:textColorHint="@color/White"
      android:textSize="14dp" />

  <ImageView
      android:layout_width="25dp"
      android:layout_height="25dp"
      android:layout_alignLeft="@id/tv_search_widget"
      android:layout_centerVertical="true"
      android:paddingLeft="10dp"
      android:src="@mipmap/search" />
</RelativeLayout>

四、判断EditText输入的是数字字母或汉字

 String text = edInput.getText().toString();  

 Pattern p = Pattern.compile("[0-9]*");   
 Matcher m = p.matcher(text);   
 if(m.matches() ){  
    Toast.makeText(Main.this,"输入的是数字",Toast.LENGTH_SHORT).show();  
  }   

 p=Pattern.compile("[a-zA-Z]");  
 m=p.matcher(text);  
 if(m.matches()){  
    Toast.makeText(Main.this,"输入的是字母", Toast.LENGTH_SHORT).show();  
 }  

 p=Pattern.compile("[\u4e00-\u9fa5]");  
 m=p.matcher(text);  
 if(m.matches()){  
    Toast.makeText(Main.this,"输入的是汉字", Toast.LENGTH_SHORT).show();  
 }  

五、改变hint文字大小和其他属性

今天同事在工作中碰到一个问题, 就是EditText中的文字在设定大小后, Hint文本由于太长导致在EditText中无法完整的显示, 所以问有没有单独设置Hint文本大小的选项. 在网上看了一下都没有这方面的介绍. 于是我看了下TextView的源码(EditText继承自TextView), 发现了一些端倪,如下:

Java

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这个方法:

Java

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类型,就可以保持文本的自定义属性了吗? 答案是肯定的! 直接上代码:

Java

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对象,这样自定义的额属性就会丢失.

除了可以改变Hint的大小,其它属性都可更改, 具体的的Spaned类型可以参考这个链接: Android中的各类Span全面系统研究

六、限定EditText中drawableLeft图片的大小

xml文件

<EditText
    android:id="@+id/editTxt_userName"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:hint="搜索书籍"
    android:layout_alignParentRight="true"
    android:drawableLeft="@mipmap/search"
    />

java代码

public class LoginActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.login_index);
         
        //控制登录用户名图标大小
        EditText editText1 = (EditText) findViewById(R.id.editTxt_userName);
        Drawable drawable1 = getResources().getDrawable(R.drawable.login_user);
        drawable1.setBounds(0, 0, 40, 40);//第一0是距左边距离,第二0是距上边距离,40分别是长宽
        editText1.setCompoundDrawables(drawable1, null, null, null);//只放左边
   }
}

七、Android中设定EditText的输入长度

如何限定Android的Text中的输入长度呢?

方法一:可以在layout xml中加上属性 android:maxLength

比如:

<EditText
    android:id="@+id/editTextShow"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hint"
    android:cursorVisible="false"
    android:lines="1"
    android:maxLength="16"
    />

方法二:在代码中控制

editText.setFilters(new InputFilter[]{new InputFilter.LengthFilter(20)});

以上是在日常工作中遇到的EditText相关问题做的笔记,其中参考了很多文章,时间久远找不到各个原文地址了,见谅!
原作者如果看到可以提醒我加上原文链接~

相关文章

  • EditText 相关知识点集锦

    一、默认获取焦点后全选文字 获得焦点即全选 二、自定义AlertDialog软件盘弹不出解决办法 三、让EditT...

  • Android 键盘相关与EditText问题集锦

    一、取消EditText键盘弹出 1.editText.clearFocus(); // 取消焦点2.通过键盘...

  • 总结:Android问题集锦之控件类

    一、EditText: 1、EditText自动换行的问题: 在xml布局中,设置EditText的相关属性: 亲...

  • Edittext相关

    更改下划线的颜色 普通来说,对当前页面/window设置主题,主题里设置colorAccent就是Edittext...

  • EditText 相关

    1.强制关闭键盘 InputMethodManager imm = (InputMethodManager)mCo...

  • 自定义EditText实现右侧图标

    自定义EditText实现右侧图标 自定义MyEditText继承EditText 使用: 注意:用到的一些知识点...

  • Edittext 相关知识

    1.判断输入内容是否为空 2.将光标移动到字的最后面 3.当edittext内嵌入图片时,设置图片内边距 4.去掉...

  • EditText 相关设置

    1. 设置 整数或小数 以及相关位数 1.1 过程中 设置校验规则 设置相关位数 1.2 提交 设置校验规则 其他...

  • editText 相关问题

    需求:EditText 设置弹起的键盘默认英文,允许输入中文。纯英文:使用邮箱模式缺点:手机会自动提示 邮箱地址,...

  • Android EditText 用法小结

    知识点 显示光标但不显示软键盘 将光标移至文字末尾 给EditText设置文本 给EditText设置为空 搜索跳...

网友评论

    本文标题:EditText 相关知识点集锦

    本文链接:https://www.haomeiwen.com/subject/zykyxxtx.html