android开发分享如何消除焦点而不把焦点放在另一个控制上?

我喜欢我的UI是直观的; 每个屏幕都应该自然而不引人注目地引导用户进入应用的下一步。 除此之外,我努力使事情变得混乱和混乱。

开玩笑 :-)

我有三个TableRows,每个包含一个只读和不可调焦的EditText控件,然后在其右侧有一个button。 每个button启动相同的活动,但具有不同的参数。 用户在那里做出select,子活动结束,用用户的select填充适当的EditText。

这是经典的级联价值机制; 每个select都会缩小下一个select的可用选项等。因此,我将禁用每个下一行的两个控件,直到当前行上的EditText包含一个值。

我需要按照以下顺序执行以下两项操作之一:

问题在子活动返回后出现; 被点击的button保持焦点。

回复:#1以上 – 似乎没有一个removeFocus()方法,或类似的东西

Re:上面的#2 – 我可以使用requestFocus()将焦点设置到下一行的button,并且在子活动返回之后工作,但由于某种原因,它在父活动的onCreate()中不起作用。

我需要在任何一个方向的UI一致性 – 在子活动完成后,或者每个button都获得焦点(取决于其在逻辑stream程中的位置,包括在任何select之前的第一个(且唯一的)活动button),则没有button具有焦点。

    使用clearFocus()似乎没有为我工作,或者你发现(看到在另一个答案的意见),但最终对我的工作是增加:

    <LinearLayout android:id="@+id/my_layout" android:focusable="true" android:focusableInTouchMode="true" ...> 

    到我的顶级布局视图(线性布局)。 要从所有button/ EditTexts等删除焦点,然后就可以了

     LinearLayout myLayout = (LinearLayout) activity.findViewById(R.id.my_layout); myLayout.requestFocus(); 

    除非我将观点设定为可调整的,否则请求焦点不会做任何事情。

    老问题,但当我遇到类似的问题时,我碰到了它,并认为我会分享我最终做的事情。

    获得重点的观点每次都不一样,所以我用了非常通用的观点:

     View current = getCurrentFocus(); if (current != null) current.clearFocus(); 

    那么只需在清单中的活动中添加android:windowSoftInputMode="stateHidden"

    采取从一个聪明的人评论这个: https : //stackoverflow.com/a/2059394/956975

    首先,它会100%的工作……..

     <LinearLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:app="https://schemas.android.com/apk/res-auto" android:id="@+id/ll_root_view" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> LinearLayout llRootView = findViewBindId(R.id.ll_root_view); llRootView.clearFocus(); 

    我已经完成更新configuration文件信息,并从我的布局中的EditText删除所有焦点时使用此

    ====>更新:在父级布局内容中,我的EditText添加行:

     android:focusableInTouchMode="true" 

    您可以尝试closures主Activity的保存状态(从而使其忘记了文本以及焦点所在)。 你需要有一些其他方法来记住你的EditText有什么,并重新填充onResume()。 使用startActivityForResult()启动子活动,并在主Activity中创build一个onActivityResult()处理程序,以正确更新EditText。 这样,您可以在使用myButton.post(new Runnable(){run(){myButton.requestFocus();}})重新设置EditText的同时,设置合适的onResume()button。

    View.post()方法最初设置焦点很有用,因为这个runnable会在窗口创build完成之后执行,让事情稳定下来,从而使焦点机制在那个时候正常工作。 尝试在onCreate / Start / Resume()期间设置焦点通常有问题,我发现。

    请注意,这是伪代码,未经testing,但这是一个可能的尝试方向。

    我试图禁用和启用可视性的焦点,它为我工作(焦点被重置):

     focusedView.setFocusable(false); focusedView.setFocusableInTouchMode(false); focusedView.setFocusable(true); focusedView.setFocusableInTouchMode(true); 

      以上就是android开发分享如何消除焦点而不把焦点放在另一个控制上?相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/515387.html

      (0)
      上一篇 2020年12月1日
      下一篇 2020年12月1日

      精彩推荐