Android 設定系統的返回鍵 和軟鍵盤擷取焦點問題

來源:互聯網
上載者:User

標籤:

很多朋友出現過這樣的一個問題,當底部彈出評論框時,有幾個問題,一個是軟體盤彈出時怎麼讓焦點在輸入框,關於這個問題,本人也是遇到過,解決了很久,有的是在布局設定或者代碼裡setFocusable(true),並沒有用,又在代碼或者代碼裡設定requestFocus(),依然沒有用,其實這個解決辦法是沒有錯的,但是為什麼會沒用呢,因為並沒有及時是在軟體盤彈出時設定,所以先提出隱藏和顯示軟體盤的方法

private void onFocusChange(boolean hasFocus) {final boolean isFocus = hasFocus;(new Handler()).postDelayed(new Runnable() {public void run() {InputMethodManager imm = (InputMethodManager) commentEdit.getContext().getSystemService(INPUT_METHOD_SERVICE);if (isFocus) {// 顯示IMEimm.toggleSoftInput(0, InputMethodManager.HIDE_NOT_ALWAYS);commentEdit.setFocusable(true);commentEdit.requestFocus();} else {// 隱藏IMEimm.hideSoftInputFromWindow(commentEdit.getWindowToken(), 0);}}}, 100);}





其中,commentEdit是你布局的editext的id的變數,這個方法寫的很清楚,顯示IME和隱藏IME,當你在其他方法調用時,只需設定onFoucsChange(true)或者onFoucsChange(false),那麼問題來了,這裡分為2種情況,

1.方法中我已經包含了輸入框擷取焦點的方法

commentEdit.setFocusable(true);commentEdit.requestFocus();
那麼當輸入完以後怎麼隱藏呢,對,就是剛才說的onFoucsChange(false)即可,你可以在輸入框之外的地方設定點擊事件,然後調用這個方法,然後設定之前的布局設為顯示即可setvisitible(true),就可以了,給個圖讓大家看看例子吧

大家看圖可以得知,焦點已經自己擷取在輸入框了,並不是我點擊而或取得,就是這種效果,取消輸入框的方式,我自己設定了3種,一種是彈出的軟體盤,我設定了取消,一種是在評論列表裡設定,還有一種就是我標紅色的地方,這個我手機內建的返回按鈕,重點來了,很多人在點擊系統內建的返回鍵時,發現無法取消,然後有的人在網上找了設定系統的返回鍵,在裡面進行隱藏操作,可是隱藏以後,這個返回鍵就不具備返回的功能,然後又的人就加上finish();結果發現隱藏的同時也返回了,這並不是我們呢想要的效果,我們想要的是點擊一下,輸入盤以藏,然後接下來的點擊才返回,下面我直接貼出代碼,很簡單,大家也很好理解

,首先在全部變數用handler發送

   private static boolean isExit = false;
Handler mHandler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            isExit = false;        }    };
然後重寫onKeyDown方法

@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {         if (keyCode == KeyEvent.KEYCODE_BACK                 && event.getRepeatCount() == 0) {    bottomLinear.setVisibility(View.VISIBLE);commentLinear.setVisibility(View.GONE);onFocusChange(false); exit();        }         return true;     }
private void exit() {        if (!isExit) {            isExit = true;            Toast.makeText(getApplicationContext(), "再按一次退出程式",                    Toast.LENGTH_SHORT).show();            // 利用handler延遲發送更改狀態資訊            mHandler.sendEmptyMessageDelayed(0, 2000);        } else {            finish();        }    }



這個方法裡,我設定的

   bottomLinear.setVisibility(View.VISIBLE);
commentLinear.setVisibility(View.GONE);
是我自己的布局,就是大家圖上看到的不彈出輸入框的布局,這個大家根據實際情況鎖定.

好了,這些東西都有了,大家就可以正常的操作你的軟鍵盤了,以後遇到這些問題也可以不用怕了 

給個好評吧






Android 設定系統的返回鍵 和軟鍵盤擷取焦點問題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.