2010-12-05 129 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); 
相关问题