
如何让 EditText 在 Activity 启动时不获得焦点如何让 EditText 在 Activity 启动时不获得焦点在进入一个Activity时,如果这个Activity中有EditText,则这个EditText会自动获取焦点,然后就会d出软键盘,这样给用户
在android项目中,一进入一个页面, EditText默认就会自动获取焦点。使用如下的方法可以让EditText无法获取焦点。
解决之道:在EditText的父级控件中设置下面的属性
Android:focusable="true" android:focusableInTouchMode="true"
在window7平台,android studio开发工具下,步骤如下。
1、打开android sutdio并创建一个项目,如下图:
2、打开界面的布局文件,在布局文件中增加一个Edittext的空间,并在EditText的父控件中设置如下属性,即可让EditText无法获取焦点,如下图:
1、首先自定义布局
2、把自定义布局放入dialog中显示
3、通过自定义布局查找对应的edittext组件
final View DialogView = a inflate ( Rlayoutloand, null);//1、自定义布局
//创建对话框
AlertDialog dlg = new AlertDialogBuilder(loandthis)
setTitle("登录框")
setView(DialogView)//设置自定义对话框的样式,2、自定义布局放入dialog中显示
setPositiveButton("登陆", //设置"确定"按钮
new DialogInterfaceOnClickListener() //设置事件监听{
public void onClick(DialogInterface dialog, int whichButton){editText1 =(EditText) DialogViewfindViewById(RideditText1);
editText2 =(EditText) DialogViewfindViewById(RideditText2);//3、过自定义布局查找对应的edittext组件
String id = editText1getText()toString();
String password = editText2getText()toString();
判断一个EditText是否右焦点,其实就是给et设置一个onFocusChangeListener监听器。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
superonCreate(savedInstanceState);
setContentView(Rlayoutactivity_main);
EditText et2 = (EditText) findViewById(Ridet2);
final EditText et1 = (EditText) findViewById(Ridet1);
//根据是否有焦点更新背景(这里只是演示使用,其实这种更换背景的效果可以通过Selector来实现)
et1setOnFocusChangeListener(new ViewOnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
Loge("abc", "et1获取到焦点了。。。。。。");
et1setBackgroundResource(Rdrawableshape_edit1); //获取焦点后更改背景色
} else {
Loge("abc", "et1失去焦点了。。。。。。");
et1setBackgroundResource(Rdrawableshape_edit2); //失去焦点后更改背景色
}
}
});
}
}
注意:
1 如果一个界面中,只有一个Et,那么除非手动设置,否则,Et一直有焦点
2 如果有多个Et,那么点击哪个ET,哪个Et就会获取焦点
//让编辑框d出来,并显示对谁进行评论
commentEditTextsetFocusable(true);
commentEditTextsetFocusableInTouchMode(true);
commentEditTextrequestFocus();
//打开软键盘
InputMethodManager imm = (InputMethodManager)getActivity()getSystemService(ContextINPUT_METHOD_SERVICE);
immtoggleSoftInput(0, InputMethodManagerHIDE_NOT_ALWAYS);
//让编辑框d出来,并显示对谁进行评论commentEditTextsetFocusable(true);
commentEditTextsetFocusableInTouchMode(true);
commentEditTextrequestFocus();
//打开软键盘
InputMethodManager imm = (InputMethodManager)getActivity()getSystemService(ContextINPUT_METHOD_SERVICE);
immtoggleSoftInput(0, InputMethodManagerHIDE_NOT_ALWAYS); 上面的代码,能够让EditText获取焦点,并d出软键盘,供输入文本内容。特别适用于评论列表之类的场景。
亲测可行:
et_nicnamesetFocusable(true);
et_nicnamesetFocusableInTouchMode(true);
et_nicnamerequestFocus();
Timer timer = new Timer();
timerschedule(new TimerTask() { //让软键盘延时d出,以更好的加载Activity
public void run() {
InputMethodManager inputManager =
(InputMethodManager)et_nicnamegetContext()
getSystemService(ContextINPUT_METHOD_SERVICE);
inputManagershowSoftInput(et_nicname, 0);
}
}, 800);
以上就是关于如何让 EditText 在 Activity 启动时不获得焦点全部的内容,包括:如何让 EditText 在 Activity 启动时不获得焦点、如何让Edit控件无法获得焦点、android 自定义的dialog,edit text 不能获得焦点,d出软键盘。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)