Android : clear focus on edittext when activity starts

前端 未结 8 906
伪装坚强ぢ
伪装坚强ぢ 2021-01-02 14:30

I\'ve some settings page in my app. Once the activity gets starts directly it focus to edittext and i used following code to clear foucs.



        
相关标签:
8条回答
  • 2021-01-02 14:37

    Put the code to remove the focus in your onStart() method and it should work fine.

    0 讨论(0)
  • 2021-01-02 14:38

    Actually, the first focusable view in the activity receives initial focus. If that happens to be your EditText, it will be initially focused.

    If you don't want that, here's your options:

    Focus another view

    Programmatically identify what view you do want to give initial focus to.

    @Override
    protected void onStart() {
    
        super.onStart();
        findViewById( R.id.yourOtherViewId ).requestFocus();
    }
    

    Make an earlier view in your layout focusable

    If you rather it appears as though "no view has initial focus" you could make the parent view group focusable. In the following example, I make my LinearLayout focusable by setting android:focusableInTouchMode="true":

    <LinearLayout
        android:focusableInTouchMode="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    
        <EditText
            ...
    
    0 讨论(0)
  • 2021-01-02 14:39

    I used the solution shown up in this page but it didn't work. Add this attribute to your activity tag into AndroidManifest:

    android:windowSoftInputMode="stateHidden"
    

    It works perfectly.

    0 讨论(0)
  • 2021-01-02 14:45

    Me realy help only android:focusableInTouchMode="true" in my parent view group.

    0 讨论(0)
  • 2021-01-02 14:51

    In the layout XML file, specify an imeOption on your EditText:

    android:imeOptions="actionGo"
    

    Next, add an action listener to your EditText in the Activity's java file

    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;
        }
    });
    

    Where mYourEditText is an EditText object

    0 讨论(0)
  • 2021-01-02 14:57

    If your EditText is a child of your RelativeLayout you can use android:descendantFocusability to request the focus:

    <RelativeLayout 
         android:id="@+id/RequestFocusLayout"
         android:focusable="true"
         android:layout_width="0px"
         android:layout_height="0px" 
         android:descendantFocusability="beforeDescendants" 
         android:focusableInTouchMode="true" />
    
    0 讨论(0)
提交回复
热议问题