2014-09-02 56 views
0

我在我的操作欄中有一個微調,它只在onCreateActionMode()中初始化一次;維護微調下拉狀態

問題:當旋轉器下拉可見並且我嘗試旋轉屏幕時,方向更改後不會保持下拉狀態。

我該如何保持狀態,以便在縱向模式下可以看到微調器下拉菜單,然後在橫向模式下進行方向更改後也應該可以看到下拉菜單。

另外讓我知道API,通過它我們檢查下拉列表在給定點是否可見。也是一個強制顯示下拉菜單的API。

我也在我的Manifest文件中指定了configChanges =「orientation」。

回答

0

我發現了一個非常難看的解決這個(以下簡稱「行動」發生在onConfigurationChanged法):

  1. 調用的setContentView之前,檢查下拉列表視圖顯示(* ),如果是,請保存當前在微調器中選擇的位置(int pos = spinner.getSelectedItemPosition())。

  2. 主叫的setContentView和設置旋轉器適配器,如果下拉視圖在步驟1中示出後,強制下拉視圖通過調用performClick上旋轉器,以顯示:

    spinner.setSelection(pos);// this way we make sure that the same item 
              // remains selected after rotating the device 
    spinner.performClick(); //show the dropdown view 
    

(*)檢查下拉列表視圖是否顯示爲棘手的部分。我還沒有發現(還),讓我知道下拉視圖是否顯示,所以我不得不做以下的方法:

  • 保持在布爾變量(名爲微調的按下狀態,例如,isClicked)。

  • 設置一個onTouchListener爲所說的紡絲器和在onTouch方法設置isClicked爲true(攻牙旋轉器,所述dropdwon視圖打開時,使isClicked == TRUE意味着下拉視圖是示出)。

  • 覆蓋的onkeydown的onkeyup和當按下後退按鈕,如果isClicked是真實的,它設置爲false(I假定按壓背部與isClicked == TRUE裝置關閉所述下拉視圖) 。

  • 使用值isClickedonConfigurationChanged方法來檢查是否被示出的下拉圖。

就像我說的那樣,這是一個醜陋的修復,但它是我能夠想到的唯一一個。如果有人有其他想法,請張貼他們。

here

虛心採取有其他的解決方案也是這是如下

  1. SO answer 1
  2. SO answer 2

底線是你需要捕獲status一些布爾變量)wh en旋轉器打開,並在活動configChange需要初始化旋轉器狀態從status

希望它有幫助!