2013-02-25 183 views
0

我正在使用ActionBarSherlock庫來獲取預蜂窩版本上的操作欄。我有其動作條菜單從下面的XMLAndroid:ActionView摺疊按回按鈕

menu.xml文件充氣活性

<menu xmlns:android="http://schemas.android.com/apk/res/android">   
    <item android:id="@+id/action_bar_search" 
     android:icon="@drawable/ic_search" 
     android:showAsAction="always|collapseActionView" android:title="Search" 
     android:actionLayout="@layout/layout_search">   
    </item> 
</menu> 

下面是actionLayout

> layout_search.xml

<?xml version="1.0" encoding="utf-8"?> 
    <AutoCompleteTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/autoCompText_action_bar_search" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"  
    android:cursorVisible="true"  
    android:imeOptions="flagNoExtractUi" 
    android:inputType="text" 
    android:textColor="@color/color_action_bar_text" 
    android:textCursorDrawable="@android:color/black" 
    android:background="@drawable/textfield_bg_activated_holo_dark"    
    /> 

我還實施了OnActionExpandListener來收聽展開和摺疊 菜單項目的事件。下面是我實現OnActionExpandListener

private OnActionExpandListener searchActionExpandListener = new OnActionExpandListener() {   
      @Override 
      public boolean onMenuItemActionExpand(MenuItem item) {    

       /* This is done so that requestFocus() can popup the softkeyboard. 
       * Else, no softkeyboard is popped up 
       */ 
       edtTextSearch.post(new Runnable() { 
        @Override 
        public void run() { 
         edtTextSearch.requestFocus(); 
         mImm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
         mImm.showSoftInput(edtTextSearch, InputMethodManager.SHOW_IMPLICIT); 
        } 
       }); 
       return true; 
      } 
     @Override 
     public boolean onMenuItemActionCollapse(MenuItem item) {     
      mImm.hideSoftInputFromWindow(edtTextSearch.getWindowToken(), 0); 
      return true; 
     } 
    }; 

所以現在,在按壓動作搜索按鈕欄的actionLayout顯示和softkeyboard被彈出,以及重點就可以了。所有工作都很好,直到現在但是當我按下後退鍵(手機上的硬鍵)時,操作視圖會崩潰。我想要做的就是按下後退鍵隱藏軟鍵盤(如果正在顯示),而不是摺疊操作視圖。任何人都可以請幫我嗎?

+0

您好Viren,你也應該看看我的答案類似的問題:[上下文ActionBar隱藏,當我點擊硬件後退和鍵盤輸出](http:///stackoverflow.com/a/23122941/2668136),它可能會幫助你。 – Fllo 2014-04-19 14:28:28

+0

感謝Filo的積極響應。您的鏈接給了我一個全新的視角 – Viren 2014-04-19 19:30:58

+0

很高興幫助!這很奇怪,因爲我從未在我的項目中看到過這種行爲。我會做一些測試,以便知道我的錯在哪裏。無論如何,我希望這會幫助你。良好的編碼。 – Fllo 2014-04-19 19:37:44

回答

0

我有一個ActionBarSherlockCollapseActionView類似的問題。你的代碼對我有很大的幫助,但是我無法在早期版本(2. +)上彈出一個Runnable()(不知道爲什麼)。只是一個小竅門可以避免你用這樣的方式,請參閱下面我的代碼:

@Override 
public boolean onMenuItemActionExpand(MenuItem item) {    
    // Set the focus 
    edtTextSearch.requestFocus(); 
    // This force the Soft Keyboard to appear whatever the version used 
    mImm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 
            InputMethodManager.HIDE_IMPLICIT_ONLY); 
    return true; 
} 

這工作perferctly在2 +及以上。現在,對於你所要求的,我沒有看到所有測試設備上的東西。當View擴展時,軟鍵盤出現。然後,當我按下後退按鈕時,軟鍵盤消失,並且View不會摺疊(即使在橫向模式下)。如果我再按一次,這裏View崩潰。
你能解釋更多你想要什麼嗎?因爲我沒有正確地看到你的動作在後退按鈕上以摺疊View

經過一番研究,我在想你想讓你的DownDropList可見與CollapseActionView,所以也許這將是有用的看看這個:DropDownList of AutoCompleteTextView opened after pressing the Back key?。以防萬一,我發現這個:EditText with soft keyboard and 「Back」 button