安卓:明确重点的EditText活动开始时,(Android : clear focus on ed

2019-06-25 16:39发布

我在我的应用程序已经有些设置页面。 一旦活动开始得到直接焦点的时候EDITTEXT,我用下面的代码清除FOUCS。

<RelativeLayout 
     android:id="@+id/RequestFocusLayout"
     android:focusable="true"
     android:focusableInTouchMode="true"
     android:layout_width="0px"
     android:layout_height="0px"/>

在Java代码

 RelativeLayout focuslayout = (RelativeLayout) findViewById(R.id.RequestFocusLayout);
 focuslayout.requestFocus();

当活动开始于第一次上面的代码工作正常,如果同一个活动再次启动,自动的EditText获得焦点。

谁能帮我解决这个问题。

Answer 1:

If Come back from other activity edittext get focused. 

把这些线在onStart()或onReusme()

  RelativeLayout focuslayout = (RelativeLayout) findViewById(R.id.RequestFocusLayout);
 focuslayout.requestFocus();


Answer 2:

实际上, 在该活动第一可聚焦的视图接收初始焦点 。 如果出现这种情况是你EditText ,将最初的重点。

如果你不希望出现这种情况,这是你的选择:

聚焦另一种观点

以编程方式确定哪些查看您想给最初的焦点。

@Override
protected void onStart() {

    super.onStart();
    findViewById( R.id.yourOtherViewId ).requestFocus();
}

以前的某个视图在布局可聚焦

如果你宁愿看起来好像“无视听具有初始焦点”你可以让父视图组可获得焦点。 在下面的例子中,我把我LinearLayout可调焦设置android:focusableInTouchMode="true"

<LinearLayout
    android:focusableInTouchMode="true"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <EditText
        ...


Answer 3:

如果您的EditText是你的RelativeLayout的孩子,你可以使用android:descendantFocusability要求重点:

<RelativeLayout 
     android:id="@+id/RequestFocusLayout"
     android:focusable="true"
     android:layout_width="0px"
     android:layout_height="0px" 
     android:descendantFocusability="beforeDescendants" 
     android:focusableInTouchMode="true" />


Answer 4:

我曾经在这个页面显示了解决方案,但没有奏效。 这个属性添加到您的活动代码AndroidManifest:

android:windowSoftInputMode="stateHidden"

它完美的作品。



Answer 5:

我真的只帮助android:focusableInTouchMode="true"在我父视图组



Answer 6:

把代码移除焦点在你在onStart()方法,它应该工作的罚款。



Answer 7:

在布局XML文件中,指定您的EditText的imeOption:

android:imeOptions="actionGo"

接下来,在活动的Java文件中添加一个动作监听你的EditText

mYourEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
        if (actionId == EditorInfo.IME_ACTION_GO) {
            // hide virtual keyboard
            InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.hideSoftInputFromWindow(mYourEditText.getWindowToken(), 0);
            return true;
        }
        return false;
    }
});

凡mYourEditText是一个EditText对象



文章来源: Android : clear focus on edittext when activity starts