gpt4 book ai didi

带有 showSoftInput 的 Android 显示软键盘不起作用?

转载 作者:IT老高 更新时间:2023-10-28 22:19:01 30 4
gpt4 key购买 nike

我创建了一个简单的应用程序来测试以下功能。当我的 Activity 启动时,它需要在软键盘打开的情况下启动。

我的代码不起作用?!

我尝试了 list 中的各种“状态”设置以及 InputMethodManager (imm) 代码中的不同标志。

我已将设置包含在 AndroidManifest.xml 中,并在唯一 Activity 的 onCreate 中显式调用。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mycompany.android.studyIme"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="7" />

<application android:icon="@drawable/icon" android:label="@string/app_name">
<activity android:name=".StudyImeActivity"
android:label="@string/app_name"
android:windowSoftInputMode="stateAlwaysVisible">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

</application>
</manifest>

...主布局(main.xml)...

<?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_sample_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/hello"
android:inputType="textShortMessage"
/>
</LinearLayout>

...和代码...

public class StudyImeActivity extends Activity {
private EditText mEditTextStudy;

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

mEditTextStudy = (EditText) findViewById(R.id.edit_study);
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(mEditTextStudy, InputMethodManager.SHOW_FORCED);
}
}

最佳答案

当 Activity 启动时,键盘似乎最初显示但被其他东西隐藏,因为以下工作(但实际上是一个肮脏的解决方法):

第一种方法

InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
editText.postDelayed(new Runnable()
{
@Override
public void run()
{
editText.requestFocus();
imm.showSoftInput(editText, 0);
}
}, 100);

第二种方法

在 onCreate 中在 Activity 创建时启动它

new Handler().postDelayed(new Runnable() {
@Override
public void run()
{
// InputMethodManager inputMethodManager=(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
// inputMethodManager.toggleSoftInputFromWindow(EnterYourViewHere.getApplicationWindowToken(), InputMethodManager.SHOW_FORCED, 0);

if (inputMethodManager != null)
{
inputMethodManager.toggleSoftInput(InputMethodManager.SHOW_FORCED,0);
}
}
}, 200);

第三种方法将给定代码添加到 list 中的 Activity 标签。它会在启动时显示键盘,并将第一个焦点设置为您想要的 View 。

android:windowSoftInputMode="stateVisible"

关于带有 showSoftInput 的 Android 显示软键盘不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5520085/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com