2012-02-20 63 views
1

我正在創建一個簡單的應用程序,該應用程序在頂部顯示帶有菜單的gridview。點擊時的其中一個菜單按鈕會在其下方的視圖中放置一個搜索欄。然後用戶可以移動滑塊來更改gridview中項目的大小。我可以很好地處理這個部分,當試圖擺脫seekbar時會出現問題。我需要一種方法來找出搜索欄何時失去焦點。我嘗試使用setOnFocusChangeListener,但它似乎永遠不會被調用。一些代碼低於android SeekBar - 刪除重點丟失

public class MainActivity extends Activity implements OnFocusChangeListener { 
    SeekBar seek; 

    public boolean onOptionItemSelected(MenuItem item) { 
     if(item.getId() == R.id.menu_grid_size) 
     { 
      if(seek != null) { 
       seek = new SeekBar(this); 
       seek.setOnFocusChangeListener(this); 
       ... 
       layout.addView(seek, layoutparams); 
      } else { 
       layout.removeView(seek); 
       seek = null; 
      } 
     } 
    } 

    public void onFocusChange(Viewv, boolean hasFocus) { 
     layout.removeView(seek); 
    } 

} 

一切正常,除非我在列表中搜索條仍然是可見的滾動。也許這不是做我想做的最好的方式,任何幫助將不勝感激。

編輯:我修改了上面的代碼來修復當我單擊按鈕兩次時得到的錯誤。

回答

1

所以我認爲找到了一個解決方案,我認爲它工作得很好。由於我正在使用搜索欄,因此我使用onStopTrackingTouch()方法來查明用戶何時擡起手指並將其用作何時移除滑塊的指示符。

public void onStopTrackingTouch(SeekBar seekBar) { 
    if(seekBar != null){ 
     layout.removeView(seekBar); 
     seekBar = null; 
}