【问题标题】:Android why focus first element?Android为什么要关注第一个元素?
【发布时间】:2017-12-18 03:36:30
【问题描述】:

Android Activity 启动时焦点第一个可聚焦元素 当布局改变时也会发生这种情况

所以如果设备在 SoftInputMode 调整大小时使用 EditText,设备将随着布局的变化而失去焦点

但是,您不能使用 adjustPan,因为它需要 resize 属性。

另外,你不能使用focusable和focusableInTouchMode,因为你必须在布局改变时保持焦点。

有没有办法指定第一个焦点? 或者当布局改变时我可以保持焦点吗?

【问题讨论】:

    标签: java android android-activity android-edittext focus


    【解决方案1】:

    你可以通过requestFocus()方法在你想要的元素上设置焦点,例如

     final TextView textView = (TextView) findViewById(R.id.textview);
     textView.requestFocus(); 
    

    【讨论】:

    • 我试过这个方法,但是可以指定焦点,但是不能在布局发生变化的时候被Android系统任意设置焦点。我无法保持专注。
    • 告诉我你到底想做什么,会尽力解决你的问题。
    • 我无法使用EditText,因为当通过触摸EditText出现键盘时更改布局时,焦点会更改为第一个元素。
    • 在 Xml 文件的 EditText 中添加这一行 android:focusable="false"
    • 但是,如果 focusable 为 false,我不能使用 EditText。
    【解决方案2】:
    EditText firsteditText=(EditText)findViewById(R.id.first); 
    firsteditText.requestFocus();
    

    【讨论】:

    • 如果你想使用 xml 来聚焦然后使用
    • 请避免发布纯代码答案。请解释为什么这会有所帮助。
    • 请求焦点用于在edittext框上自动设置键盘功能,因此活动开始后它将自动选择定义的Requestfocus editText并打开键盘,以便应用程序用户可以直接将数据插入editText框。
    猜你喜欢
    • 1970-01-01
    • 2022-08-11
    • 1970-01-01
    • 2022-10-04
    • 2022-06-15
    • 1970-01-01
    • 2012-04-28
    • 2017-01-09
    • 1970-01-01
    相关资源
    最近更新 更多