2012-09-04 95 views
1

我需要從Android中的SoftKeyboard中獲取顯示/隱藏事件。Android中的顯示/隱藏軟鍵盤事件

我做了一項研究,但沒有成功。

我想這是因爲我們正在使用低分辨率的平板電腦5.0「,所以當您編輯EditText時,鍵盤會全屏顯示,然後或者您按下」輸入或下一個「鍵,或者你按下後退按鈕來隱藏鍵盤......我需要用新值更新一些字段,但是我不能使用TextWatcher,因爲在正確的字段更新時會有一些業務邏輯,因爲我只是想在用戶真正完成輸入時進行更新。

而onFocusChanged不是一個選項,因爲我們不希望我們的客戶需要登錄下一個領域,並隱藏鍵盤以查看新值。

我不想重寫onTouchEvent,看看用戶cliked是否與他正在編輯的字段不同。

對不起,我要求的具體問題和更具體的解決方案。

而且我的英語不好對不起:d

+1

結帳This post

+0

謝謝,我要檢查帖子,看看它是否工作。 :D –

+0

非常感謝!它還活着!我的意思是......它正在工作!!!!! :D –

回答

4

使用樹型視圖觀察檢測視圖高度和任何改變那個時候你可以檢查是否鍵盤狀態

   final View activityRootView = findViewById(R.id.chat_pane_root_view); 
       activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() 
       { 
        @Override 
        public void onGlobalLayout() 
        { 
         InputMethodManager mgr = (InputMethodManager) mContext.getSystemService(Context.INPUT_METHOD_SERVICE); 
         if(mgr.isAcceptingText()) 
         { 
          //keyboard is up 
         } 
        } 
       }); 
-1

都在你的清單文件,你的活動declairation首先declaire這樣

<activity android:name="Map" android:windowSoftInputMode="stateHidden"> 

從這個屬性鍵盤被隱藏, 在此之後你在你的main.xml文件edittext中聲明瞭這個imeOption屬性

<EditText 
        android:id="@+id/edttexttitle" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:layout_marginBottom="5dp" 
        android:layout_marginTop="5dp" 
        android:hint="@string/tasktitle" 
        android:imeOptions="actionNext" 
        android:inputType="text" 
        android:textSize="@dimen/font_size_medium" 
        android:textColor="@color/darkgray1" /> 

這段代碼是爲你的第一個edittext如果不止一個,如果只有一個EditText上那麼你需要改變的EditText的imeOption像

android:imeOptions="actionGo" 
+0

謝謝,但這不是我所期望的。 我不想改變鍵盤上的「輸入」鍵。 我的問題的評論工作。 –