如何让 EditText 在 Activity 启动时不获得焦点

如何让 EditText 在 Activity 启动时不获得焦点,第1张

如何让 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出软键盘。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9611881.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存