如何在Android中检测键盘动画结束?或立即隐藏键盘而不动画

时间:2013-01-30 03:43:05

标签: android keyboard android-edittext

我有很多EditText我将其中一些设置为setInputType(InputType.TYPE_NULL),让我们的输入视图处理插入数据。

但其中一些,我使用EditText的原始键盘。

当我触摸正常的EditText普通键盘时,当我触摸我的自定义EditText时,键盘显示并处于此状态键盘不会立即隐藏,我的自定义输入会显示在该键盘上方。

感谢。

2 个答案:

答案 0 :(得分:2)

为什么不使用自己的键盘布局?

或者如果你想使用那么你必须改变它的风格。

这是默认的KeyboardView样式的代码:

<style name="Widget.KeyboardView" parent="android:Widget">
    <item name="android:background">@android:drawable/keyboard_background</item>
    <item name="android:keyBackground">@android:drawable/btn_keyboard_key</item>
    <item name="android:keyTextSize">22sp</item>
    <item name="android:keyTextColor">#FFFFFFFF</item>
    <item name="android:keyPreviewLayout">@android:layout/keyboard_key_preview</item>
    <item name="android:keyPreviewOffset">-12dip</item>
    <item name="android:keyPreviewHeight">80dip</item>
    <item name="android:labelTextSize">14sp</item>
    <item name="android:popupLayout">@android:layout/keyboard_popup_keyboard</item>
    <item name="android:verticalCorrection">-10dip</item>
    <item name="android:shadowColor">#BB000000</item>
    <item name="android:shadowRadius">2.75</item>
</style>

希望你明白。

随意发表评论。

答案 1 :(得分:0)

  1. 将以下方法添加到您要隐藏内置SoftKeyBoard的活动中。

    public void hideSoftKeyboard(Activity activity) {
        InputMethodManager inputMethodManager = (InputMethodManager)  activity.getSystemService(Activity.INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
    }
    
  2. 现在onCreatesetContentView()之后添加以下行。

    final EditText editText = (EditText) findViewById(R.id.edtTitle);
    editText.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View view, MotionEvent event) {
            android.util.Log.i(TAG, "Touch");
            hideSoftKeyboard(JoinImageActivity.this);
            //Open your custom keyboard here
            return true;
        }
    });
    
  3. 在这里,您可以打开自定义键盘,因为它隐藏了内置键盘。我希望这可以帮助你。