2015-06-24 78 views
0

我想在Android中點擊editText時隱藏一個按鈕。最初我使用下面的代碼如何隱藏editText上的按鈕點擊Android?

editText.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       button.setVisibility(View.INVISIBLE); 
      } 
     }); 

但爲此,我需要點擊editText兩次。因此,爲了避免它,我做EDITTEXT重點虛假

android:focusable="false" 

和下面的代碼中的EditText

editText.setOnClickListener(new View.OnClickListener() { 
       @Override 
       public void onClick(View view) { 
        button.setVisibility(View.INVISIBLE); 
    InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Service.INPUT_METHOD_SERVICE); 
      imm.showSoftInput(donationQuantity, 0); 

       } 
      }); 

的OnClickListener在這種情況下,我能夠與EDITTEXT點擊隱藏按鈕,但鍵盤不會彈出。

+0

爲什麼不使用onFocusChangedListener,看看你是否得到關注? –

回答

2

嘗試使用setOnTouchListener代替:

editText.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      button.setVisibility(View.INVISIBLE); 
      return false; 
     } 
    }); 
0

嘗試使用此代碼,彈出鍵盤:

InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
inputMethodManager.toggleSoftInputFromWindow(linearLayout.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0); 
1

相反的onClick的註冊OnTouchListener和聽觸下事件, 每當着陸事件發生檢查按鈕可見/不可見。

editText.setOnTouchListener(new OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      editText.setFocusable(true); 
      editText.requestFocus(); 
     } 
     return true; 

    } 
}); 
+0

它工作..你可以告訴onClick和onTouch之間的editText區別? – user3213851

+0

OnTouch提供了MotionEvent,其中onClick事件是一個包含聚焦,按下和釋放的完整事件。 – strike