android 設置鍵盤按鈕為發送按鈕并監聽 及 鍵盤顯示與隱藏 監聽

<EditText
            android:id="@+id/message_input"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:imeOptions="actionSend"
            android:inputType="text"
            android:maxLines="1"
            android:singleLine="true" />

android:imeOptions="actionSend" // 起關鍵作用

 messageInput.setOnEditorActionListener(new TextView.OnEditorActionListener() {
            @Override
            public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                if (actionId == EditorInfo.IME_ACTION_SEND) {
                    sendMessage(Body_type.txt, "");
                    return true;
                }
                return false;
            }
        });

鍵盤顯示與隱藏 監聽

public class KeyboardStatusDetector {

    KeyboardVisibilityListener visibilityListener;

    boolean keyboardVisible = false;

    public void registerFragment(Fragment f) {
        registerView(f.getView());
    }

    public KeyboardStatusDetector registerActivity(Activity a) {
        return registerView(a.getWindow().getDecorView().findViewById(android.R.id.content));
    }

    public KeyboardStatusDetector registerView(final View v) {
        v.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout() {
                Rect r = new Rect();
                v.getWindowVisibleDisplayFrame(r);

                int heightDiff = v.getRootView().getHeight() - (r.bottom - r.top);
                if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
                    /** Check this variable to debounce layout events */
                    if (!keyboardVisible) {
                        keyboardVisible = true;
                        if (visibilityListener != null)
                            visibilityListener.onVisibilityChanged(true);
                    }
                } else {
                    if (keyboardVisible) {
                        keyboardVisible = false;
                        if (visibilityListener != null)
                            visibilityListener.onVisibilityChanged(false);
                    }
                }
            }
        });

        return this;
    }

    public KeyboardStatusDetector setVisibilityListener(KeyboardVisibilityListener listener) {
        visibilityListener = listener;
        return this;
    }

    public static interface KeyboardVisibilityListener {
        public void onVisibilityChanged(boolean keyboardVisible);
    }
}

// 使用:

 View rootView = getWindow().getDecorView().findViewById(android.R.id.content);

        new KeyboardStatusDetector()
                .registerView(rootView)  //or register to an activity
                .setVisibilityListener(new KeyboardStatusDetector.KeyboardVisibilityListener() {
                    @Override
                    public void onVisibilityChanged(boolean keyboardVisible) {
                        if (keyboardVisible) {   // 顯示鍵盤
                           
                        }
                    }
                });
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,315評論 25 708
  • 昨天是去常老師家上課的日子。 我恍然驚覺自己在這一周里居然沒有練過一次聲,更別說背會要參加演出的作品了。我不由得驚...
    小壞蛋格瑞特閱讀 297評論 2 2
  • 前兩天看到同學曬的紅包了。因為異地,而且男朋友中秋也有事不能過去找她,所以發紅包讓她去買月餅吃。底下一片的羨慕、感...
    小九9閱讀 242評論 0 1
  • 浮躁的心怎么也靜不下來!有諸事不順的抑郁情緒,然后就真的這不好那不好了!這是暫時性的吧?什么時候會過去呢? 第六十...
    何時是歸期閱讀 226評論 0 0
  • 印象中的旗袍總是出現在煙雨朦朦的三月,那江南的女子,穿著絲綢的旗袍,撐著一把油紙傘,行走在白墻青石的小巷里,雨絲細...
    匠客街閱讀 611評論 0 1