有时候,需要对 EditText 中的文字进行一些操控,与监听,下面我们来看看又那些吧!
1、禁止输入、允许输入
2、设置输入限制
3、设置只能输入数字
4、光标位置设置
5、输入监听
6、默认进入界面不弹出输入框
android:focusable="true" android:focusableInTouchMode="true"
实现代码
activity_edit_text.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.EditTextActivity"
android:focusable="true"
android:focusableInTouchMode="true">
<!--android:focusable="true"
android:focusableInTouchMode="true"
在 EditText 的父容器加入这两个属性,则默认不显示光标-->
<EditText
android:id="@+id/et_input"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@null"
android:hint="控制能否输入"/>
<!--background @null控制下划线为空-->
<Button
android:id="@+id/btn_no"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toRightOf="@+id/et_input"
android:text="不能输入"/>
<Button
android:id="@+id/btn_yes"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintLeft_toRightOf="@+id/btn_no"
android:text="可以输入"/>
<EditText
android:id="@+id/et_decimal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/et_input"
android:digits="0123456789."
android:hint="只能输入:0123456789." />
<!--通过 android:digits="0123456789."控制,只能输入 digits 里的值(可以自定义) -->
<EditText
android:id="@+id/et_number"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number"
app:layout_constraintTop_toBottomOf="@+id/et_decimal"
android:hint="只能输入正整数"/>
<!--通过 android:inputType="number" 控制,只能输入number-->
<EditText
android:id="@+id/et_cursorr"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/et_number"
android:hint="光标位置设置"/>
<EditText
android:id="@+id/et_listener"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:layout_constraintTop_toBottomOf="@+id/et_cursorr"
android:hint="输入监听"/>
</android.support.constraint.ConstraintLayout>
EditTextActivity.java
import android.content.Context;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.self.control.R;
import com.self.control.base.BaseActivity;
import butterknife.BindView;
public class EditTextActivity extends BaseActivity {
@BindView(R.id.et_input)
EditText etInput;
@BindView(R.id.btn_no)
Button btnNo;
@BindView(R.id.btn_yes)
Button btnYes;
@BindView(R.id.et_decimal)
EditText etDecimal;
@BindView(R.id.et_number)
EditText etNumber;
@BindView(R.id.et_cursorr)
EditText etCursorr;
@BindView(R.id.et_listener)
EditText etListener;
@Override
public void widgetClick(View v) {
switch (v.getId()){
case R.id.btn_no:
//设置不能够输入了,设置默认不能获取光标
etInput.setFocusable(false);
break;
case R.id.btn_yes:
//设置可以输入设置可以获取光标
etInput.setFocusable(true);
etInput.setFocusableInTouchMode(true);
break;
}
}
@Override
public void setListener() {
btnNo.setOnClickListener(this);
btnYes.setOnClickListener(this);
}
@Override
public void initParms(Bundle parms) {
}
@Override
public View bindView() {
return null;
}
@Override
public int bindLayout() {
return R.layout.activity_edit_text;
}
@Override
public void initView(View view) {
//设置光标位置 ,可以设置在最前面 0, 和最后面 content.length() 最好配合监听一起用(如下面)
etCursorr.setSelection(0);
//输入监听
etListener.addTextChangedListener(new TextWatcher() {
@Override//s 更改前的文字、 start 有变动的字符串的序号、 count 被改变的长度(如果是增加,则为0)、 after 被修改的文字的长度(加了几个)如果是删除的话则为0
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
Log.e("etListener1",s+" "+start+" "+count+" "+after);
}
@Override//s 更改后的文字、 start 有变动的字符串的序号、 before 被改变的长度(如果是增加,则为0)、 count 被修改的文字的长度(加了几个)如果是删除的话则为0
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.e("etListener2",s+" "+start+" "+before+" "+count);
}
@Override//s 修改后的文字
public void afterTextChanged(Editable s) {
Log.e("etListener3",s+"");
etListener.setSelection(0);
}
});
}
@Override
public void doBusiness(Context mContext) {
}
}
GitHub:https://github.com/iscopy/Control