如何在Android中显示键盘上的Toast on / off

时间:2014-10-14 05:51:39

标签: android keyboard

下面是我的代码我试图在设备上打开和关闭键盘上显示吐司信息,我的代码正在运行,但我无法显示吐司信息,请告诉我问题在哪里。

public class MainActivity extends ActionBarActivity {

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

    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_NO) {
            Toast.makeText(this, "keyboard visible", Toast.LENGTH_SHORT).show();
        } else if (newConfig.hardKeyboardHidden == Configuration.HARDKEYBOARDHIDDEN_YES) {
            Toast.makeText(this, "keyboard hidden", Toast.LENGTH_SHORT).show();
        }

    }
}


<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.keyboard.MainActivity"
        android:configChanges="orientation|screenSize|keyboardHidden"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

下面是清单文件代码,所以请告诉我哪里出错了我启用和禁用键盘时无法显示吐司。

3 个答案:

答案 0 :(得分:0)

添加此

<application  android:configChanges="keyboard|keyboardHidden" ... />
在manifest.xml文件中

修改 从这里here我发现这个解决方案不适用于软键盘 :(

答案 1 :(得分:0)

如果您想隐藏键盘,可以在Android Manifest XML文件中使用它。

<activity
android:name=".MainActivity"
android:windowSoftInputMode="stateHidden"/>

如果您想在软键盘区域外隐藏键盘,可以在java类中使用它。

EditText myEditText = (EditText) findViewById(R.id.myEditText);  
InputMethodManager imm = (InputMethodManager)getSystemService(
      Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);

您可以尝试使用此链接来检测软键盘的开/关。 参考:http://www.phonesdevelopers.com/1758842/

希望这有助于:)

答案 2 :(得分:0)

您正在检查硬键盘状态,这是真实物理键盘的状态(如果存在)。您应该检查any keyboard state

if (newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_NO) {
    Toast.makeText(this, "keyboard visible", Toast.LENGTH_SHORT).show();
else if (newConfig.keyboardHidden == Configuration.KEYBOARDHIDDEN_YES) {
    Toast.makeText(this, "keyboard hidden", Toast.LENGTH_SHORT).show();
}