2016-09-19 48 views
0

我有一個擴展對話框類的自定義對話框。啓動時的Android自定義對話框類顯示軟鍵

我必須使其關注其edittext中的一個,並顯示對話框啓動時的軟鍵。

我已經看了幾個使用inputmanager的答案,但沒有那麼多運氣。

調用對話框的活動被設置爲默認隱藏軟鍵,該軟鍵在清單中設置。

在這種情況下,我能做些什麼呢?

+0

將文本編輯爲焦點,但您想隱藏鍵盤? – surya

+0

在活動中,它不能顯示軟鍵。 – March3April4

回答

1

我會建議你在start_of_the_dialog你應該關閉鍵盤通過摺疊#SOF答案。如果它不起作用,只需在處理程序的幫助下添加100毫秒的延遲即可在對話開始時關閉鍵盤。

0

一個假設第一:

通過這一說法:

它調用的對話框設置爲默認隱藏,這是在清單中設置的自定義功能鍵的活動。

這是否意味着它具有這樣的windowSoftInputMode屬性?

<activity 
android:name=".MainActivity" 
... 
android:windowSoftInputMode="stateHidden"> 
... 
</activity> 

一種方法是在對話框的創作設置OnShowListener

  1. 在您類是-擴展,對話框類,你可以創建一個OnStateListener,並宣佈它的構造是這樣的:

    public class MyDialog extends Dialog { 
    
        public MyDialog(final Context context) { 
         super(context); 
         setContentView(R.layout.dialog_mydialog); 
         setOnShowListener(new OnShowListener() { 
          @Override 
          public void onShow(DialogInterface dialogInterface) { 
           displayKeyboard(context); 
          } 
         }); 
        } 
    
        private void displayKeyboard(Context context) { 
         View view = findViewById(R.id.et_dialog_field); 
         InputMethodManager inputMethodManager = 
           (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); 
         inputMethodManager.toggleSoftInputFromWindow(
           view.getApplicationWindowToken(), 
           InputMethodManager.SHOW_FORCED, 0); 
        } 
    } 
    
  2. 上的活動我假設你有類似:

    mButton.setOnClickListener(new View.OnClickListener() { 
        @Override 
        public void onClick(final View view) { 
         MyDialog dialog = new MyDialog(MainActivity.this); 
         dialog.show(); 
        } 
    }); 
    

外核層警告的是,如果有人要求設置OnShowListener它將覆蓋你的。

我得到了show-soft-input來自this answer的一段代碼。

0
ediText.postDelayed(new Runnable() { 

      @Override 
      public void run() { 
       // TODO Auto-generated method stub 
       InputMethodManager inputMethodManager = (InputMethodManager) 
       getSystemService(Context.INPUT_METHOD_SERVICE); 
       inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0); 
      } 
     },100);