2012-02-20 34 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; 
}