2010-12-05 100 views
1

我有一個簡單的活動,它在清單中使用android:theme="@android:style/Theme.Dialog"在對話框活動中自動顯示軟鍵盤

我的活動由一個EditText,2個按鈕和一個TextView組成。它只不過是一個用戶輸入名稱並按確定/取消的框。

我只想將焦點放在EditText上,並在活動啓動時自動顯示軟鍵盤。我已經閱讀了無數關於此的帖子,但我似乎無法讓它工作。當活動開始時,閃爍的光標出現在EditText中,但鍵盤不會顯示,直到我點擊它。

這裏是我的活動:

public class Finalize extends Activity { 

    private EditText mEditName; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.finalize_dialog); 

     mEditName = (EditText) findViewById(R.id.file_name_edit); 
     mEditName.setFocusable(true); 
     mEditName.requestFocus(); 

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

,我也嘗試過的onCreate此:

InputMethodManager mgr = (InputMethodManager) getSystemService(this.INPUT_METHOD_SERVICE); 
    mgr.showSoftInput(mEditName, 0); 

編輯:我的清單以供參考

<activity class=".Finalize" 
     android:name=".Finalize" 
     android:label="@string/file_name_title" 
     android:theme="@android:style/Theme.Dialog" 
     android:screenOrientation="portrait"   
     android:windowSoftInputMode="stateAlwaysVisible"> 
    </activity> 

回答

2

以下應該工作。轉到您的清單並使用android:windowSoftInputMode屬性更新您的活動行。

<activity android:name=".Finalize" 
    android:windowSoftInputMode="stateAlwaysVisible"> 
    ... 
</activity> 

上可以傳遞到這個屬性的不同參數的詳細信息請參見以下documentation頁面。

我測試了上述,它適用於我。這是我非常簡單的例子。 代碼:

public class DialogActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main);   
    } 
} 

佈局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 
    <TextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="@string/hello" /> 
    <EditText android:id="@+id/edit_text_test" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

清單:

<activity android:name=".DialogActivity" 
       android:windowSoftInputMode="stateAlwaysVisible" 
       android:label="@string/app_name" 
       android:theme="@android:style/Theme.Dialog"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
+0

不幸的是,沒有工作。 – user432209 2010-12-05 21:36:55

1

試試這個工作對我來說

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0); 
相關問題