我想在Activity开始时打开软键盘,我发现
android:windowSoftInputMode="stateVisible"
不起作用。
为了确保,我创建了一个新项目(默认" Hello world")并执行了以下操作:
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE)
到onCreate程序。
我用Android2.3.3编译它并尝试在我的Galaxy S2设备和Android4模拟器上运行它 仍然 - 没有键盘。
我的清单文件:
<?xml version="1.0" encoding="utf-8"?>
<uses-sdk android:minSdkVersion="9" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name">
<activity
android:name=".HelloworldActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateVisible">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
我的main.xml布局:
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<EditText
android:id="@+id/editText1"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<requestFocus />
</EditText>
我的代码:
public class HelloworldActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
}
}
答案 0 :(得分:3)
简单的事情。 我已经完成了它,它可以满足您的要求。
不要对清单做任何事情,在创建新项目时保持原样。
现在定义inputmanager。
public static InputMethodManager imm;
imm = (InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE);
现在,这里的薪水EditText是我的EditText,我在该活动开始时显示键盘。
salaryEditText.setHint("select Salary/Wage");
salaryEditText.setFilters(new InputFilter[] {new DecimalDigitsInputFilter(2)}); // Ignore this line
if(!(imm==null))
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,1);
这将有助于您在活动开始时显示键盘。
要在活动结束时关闭键盘,请参阅以下代码:
在完成活动时将此代码设为白色。
imm.hideSoftInputFromWindow(salaryEditText.getWindowToken(), 0);
希望它能解决您的问题。如果没有,请告诉我。
享受。 :)
答案 1 :(得分:2)
你使用默认的android键盘吗?如果你这样做,请在其他设备上试用,我知道它有一些问题
答案 2 :(得分:1)
当我找到here时,您可以在活动开始时通过执行以下操作来显示键盘:
EditText editText = (EditText) findViewById(R.id.editText1);
InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
mgr.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
我更改了他们的示例代码以获得EditText的ID,因此应该可以使用
答案 3 :(得分:0)
您可以通过运行:
强制首先关注EditText
视图
final EditText edit = (EditText) findViewById(R.id.editText1);
edit.post(new Runnable() {
@Override
public void run() {
edit.requestFocus();
}
});
这应该在活动开始时打开键盘。