2 qq 22934323 qq_22934323 于 2016.04.14 11:33 提问

安卓软键盘的右上角的那个收起键按钮是那个值呢?

安卓的键盘右上角的那个向下的箭头,点击了以后键盘关闭,点击那个按钮的值是那个呢?

1个回答

qq_26522963
qq_26522963   2016.04.14 11:40
已采纳

4.点击软键盘自带的收起按钮(软键盘收起)

问题卡在此处,经过资料的搜查,还是么能找到软键盘收起按钮事件监听的办法,最后在stackoverflow网站找到了从布局高度的变化来判断软键盘的打开和收起事件。

import android.graphics.Rect;
import android.view.View;
import android.view.ViewTreeObserver;

import java.util.LinkedList;
import java.util.List;

public class SoftKeyboardStateHelper implements ViewTreeObserver.OnGlobalLayoutListener {

public interface SoftKeyboardStateListener {
    void onSoftKeyboardOpened(int keyboardHeightInPx);
    void onSoftKeyboardClosed();
}

private final List<SoftKeyboardStateListener> listeners = new LinkedList<SoftKeyboardStateListener>();
private final View activityRootView;
private int        lastSoftKeyboardHeightInPx;
private boolean    isSoftKeyboardOpened;

public SoftKeyboardStateHelper(View activityRootView) {
    this(activityRootView, false);
}

public SoftKeyboardStateHelper(View activityRootView, boolean isSoftKeyboardOpened) {
    this.activityRootView     = activityRootView;
    this.isSoftKeyboardOpened = isSoftKeyboardOpened;
    activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(this);
}

@Override
public void onGlobalLayout() {
    final Rect r = new Rect();
    //r will be populated with the coordinates of your view that area still visible.
    activityRootView.getWindowVisibleDisplayFrame(r);

    final int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top);
    if (!isSoftKeyboardOpened && heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
        isSoftKeyboardOpened = true;
        notifyOnSoftKeyboardOpened(heightDiff);
    } else if (isSoftKeyboardOpened && heightDiff < 100) {
        isSoftKeyboardOpened = false;
        notifyOnSoftKeyboardClosed();
    }
}

public void setIsSoftKeyboardOpened(boolean isSoftKeyboardOpened) {
    this.isSoftKeyboardOpened = isSoftKeyboardOpened;
}

public boolean isSoftKeyboardOpened() {
    return isSoftKeyboardOpened;
}

/**
 * Default value is zero (0)
 * @return last saved keyboard height in px
 */
public int getLastSoftKeyboardHeightInPx() {
    return lastSoftKeyboardHeightInPx;
}

public void addSoftKeyboardStateListener(SoftKeyboardStateListener listener) {
    listeners.add(listener);
}

public void removeSoftKeyboardStateListener(SoftKeyboardStateListener listener) {
    listeners.remove(listener);
}

private void notifyOnSoftKeyboardOpened(int keyboardHeightInPx) {
    this.lastSoftKeyboardHeightInPx = keyboardHeightInPx;

    for (SoftKeyboardStateListener listener : listeners) {
        if (listener != null) {
            listener.onSoftKeyboardOpened(keyboardHeightInPx);
        }
    }
}

private void notifyOnSoftKeyboardClosed() {
    for (SoftKeyboardStateListener listener : listeners) {
        if (listener != null) {
            listener.onSoftKeyboardClosed();
        }
    }
}

}

代码的使用:

final SoftKeyboardStateHelper softKeyboardStateHelper = new SoftKeyboardStateHelper(findViewById(R.id.activity_main_layout);
softKeyboardStateHelper.addSoftKeyboardStateListener(...);
// then just handle callbacks

qq_22934323
qq_22934323 谢谢你的回答,非常感谢!
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
<Android>监听软键盘打开收起事件(软键盘自带收起按钮)
最近在公司开发cocos2dx上的android输入框控件,遇到软键盘的事件监听,通常软键盘的收起方式大致3种: 1.点击软键盘右下角的Return按钮(系统收起) 2.输入框焦点时按返回按钮(系统收起) 3.点击软键盘和输入框的外部(自发收起) 4.点击软键盘自带的收起按钮(软键盘收起) 前三种事件可以监听,方式都比较简单 1.点击软键盘右下角的Return按钮 给输入框设
Android监听软键盘打开收起事件(软键盘自带收起按钮)
最近在公司开发cocos2dx上的Android输入框控件,遇到软键盘的事件监听,通常软键盘的收起方式大致3种: 1.点击软键盘右下角的Return按钮(系统收起) 2.输入框焦点时按返回按钮(系统收起) 3.点击软键盘和输入框的外部(自发收起) 4.点击软键盘自带的收起按钮(软键盘收起) 前三种事件可以监听,方式都比较简单 1.点击软键盘右下角的R
Android App监听软键盘按键的收起和展开,非常好用
前言: 我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“GO”按键加载url页面;在点击搜索框的时候,点击右下角的search符号键可以进行搜索;或者在全部数据输入完毕后,点击右下角的"done"就马上进行下一步操作。 效果图:
Android收起虚拟键盘
关于收起虚拟键盘,网上能找到的大多是这个: InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(editText.getWindowToken(), 0) ; 不过这有个问题,比如我们在一个页面中
Android监听键盘弹出收起
Android监听键盘弹出收起
Android监听软键盘打开收起事件
一:了解软键盘上各类键名:电话键键名 描述 键值 KEYCODE_CALL 拨号键 5 KEYCODE_ENDCALL 挂机键 6 KEYCODE_HOME 按键Home 3 KEYCODE_MENU 菜单键 82 KEYCODE_BACK 返回键 4 KEYCODE_SEARCH 搜索键 84 KEYCODE_CAMERA 拍照键 27 KEYCODE
js判断单击软键盘的“完成”按钮
转载地址:http://www.jianshu.com/p/e5d33721595d 最近公司有一个项目,要在页面中有一个搜索框,输入内容,单击软键盘上的搜索或完成来运行函数; 开始在想,有没有一个这样的事件去监听,去网上也找不到相关的资料!唉!! 但皇天不负有心人,终于发现了解决的方法 方法一、模拟表单提交,在input外面包上一个form标签,当用户在表单中单击搜索或完成
Android App监听软键盘按键的三种方式
前言: 我们在android手机上面有时候会遇到监听手机软键盘按键的时候,例如:我们在浏览器输入url完毕后可以点击软键盘右下角的“GO”按键加载url页面;在点击搜索框的时候,点击右下角的search符号键可以进行搜索;或者在全部数据输入完毕后,点击右下角的"done"就马上进行下一步操作。 效果图: function 1: function 2: function
安卓监听和修改软键盘右下角按钮
前言:监听软键盘右下角按钮在我们开发中经常遇到,下面我来说一下如何针对软键盘右下角来进行操作。监听软键盘右下角的按钮很简单,只需要重写Activity中的dispatchKeyEvent(KeyEvent event)方法就好,比如想按右下角按钮让他消失。@Override public boolean dispatchKeyEvent(KeyEvent event) {
监听软键盘中的删除键
最近因为项目需要,要监听软键盘中的删除键,在网上搜了大部分的说法,用onKeyListener,但是不知道为什么,设置后并没有效果,最后自己通过dispatchKeyEvent实现了,代码如下 @Override public boolean dispatchKeyEvent(KeyEvent event) { if (event.getKeyCode() ==KeyEv