2011-07-16 20 views
4

私はこのコードを持っています(RelativeLayoutは私のメインレイアウトの中に1行だけあり、重要ではありません)。私のカスタムダイアログ(SettingsDialog)インサイドキーボードをダイアログに表示

RelativeLayout cellphoneNumberLayout = (RelativeLayout) findViewById(R.id.cellphone_number); 
     cellphoneNumberLayout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       SettingsDialog myDialog = new SettingsDialog(Main.this); 
       myDialog.show(); 
      } 
     }); 

私はのEditTextとボタンがあります。ダイアログが表示され、私の(単一の)EditTextフィールドにフォーカスしているときに、キーボードを極端に開くようにするにはどうすればよいですか?

私がここで見つけた古典的な "強制"を試しましたが、これはアクティビティではなく、ダイアログです。

編集:私はこれを試しましたが、機能しません。 myDialogをクラス変数として宣言し、myDialog.show();以下に追加しました。

myDialog.myEditTextField.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
        @Override 
        public void onFocusChange(View v, boolean hasFocus) { 
         if (hasFocus) { 
          myDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
         } 
        } 
       }); 

何も起こりません。

答えて

6

それがフォーカスされEDITTEXTのためのキーボードが表示されます以下:それからちょうど集中にEDITTEXTを設定

EditText editText; 
editText.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
    @Override 
    public void onFocusChange(View view, boolean focused) 
    { 
     if (focused) 
     { 
      dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
     } 
    } 
}); 

editText.setFocusable(true); 
editText.requestFocus(); 
+0

それは働いた!私は、ダイアログボックスが1つのフィールドを持ち、Android自体によって自動的にフォーカスされていたので、editTextにフォーカスを手動で設定する必要はありませんでした。 –

0

AndroidManifest.xmlでは、アクティビティタグにandroid:windowSoftInputMode = "stateVisible"を追加してキーボードを自動的に表示できます。

+1

ええ、私はcこれをアクティビティに変換しますが、私は別のアクティビティを使わずに、ダイアログでのみ行う方法を見つけようとしています。 – svenkapudija

1

EDITTEXTのためのキーボードが表示されます、次の特にあなたがカスタムダイアログ/ダイアログを持っているときにフォーカスしているとき:

myDialog.myEditTextField.setOnFocusChangeListener(new View.OnFocusChangeListener() { 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       if (hasFocus) { 
        getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE); 
       } 
      } 
     }); 
関連する問題