2014-03-18 68 views
0

比方說,我有相同的佈局一些看法,我呼籲:在試圖隱藏鍵盤時,我使用哪種視圖?

InputMethodManager imm = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(someView.getWindowToken(), 0); 

是否回事?

我試圖隱藏鍵盤的一個簡單的例子,但我沒有注意到隱藏在鍵盤方面的任何差異。微妙的差異在哪裏?

回答

1

似乎也沒關係,實際上,直到這種觀點是從同一個窗口。 作爲文檔說View.getWindowToken()

檢索唯一令牌識別這一觀點被附 到窗口。

所有活動的意見都連接到同一窗口。所以,你會從每個視圖中獲得相同的信號。

但是,如果你有鍵盤可見,並且表現出一定的對話框。之所以這樣說,對話將有一定的自定義視圖:

dialog_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:orientation="vertical" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/tryHideKeyboard" 
     android:text="Try hide keyboard"/> 
</LinearLayout> 

TestDialogFragment.java

public class TestDialogFragment extends DialogFragment { 

    @Override 
    public Dialog onCreateDialog(Bundle savedInstanceState) { 
     final View view = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_layout, null); 

     view.findViewById(R.id.tryHideKeyboard).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(final View v) { 
       final InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); 
       imm.hideSoftInputFromWindow(v.getWindowToken(), 0); 
      } 
     }); 

     // Use the Builder class for convenient dialog construction 
     final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
     builder.setMessage("Test dialog") 
       .setView(view) 
       .setPositiveButton("OK", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(final DialogInterface dialog, final int which) { 
         // nothing to do 
        } 
       }); 
     // Create the AlertDialog object and return it 
     return builder.create(); 
    } 
} 

然後在對話框(與活動揭開了按Try hide keyboard按鈕例如主佈局上的EditText和鍵盤可見),後面的鍵盤將不會關閉,因爲對話框有自己的窗口。

所以,我會說,沒有,也沒關係,直到您嘗試從視圖將附着在另一個窗口(例如,從彈出的對話框中)關閉鍵盤。

+0

感謝您將它放在一起! –

相關問題