android SeekBar - 删除焦点丢失

时间:2012-02-20 18:52:12

标签: android focus seekbar

我正在创建一个简单的应用程序,它在顶部显示一个带有菜单的gridview。单击其中一个菜单按钮会在其右下方的视图上放置一个搜索栏。然后,用户可以移动滑块以更改gridview中项目的大小。我可以处理那个部分就好了,问题出现在试图摆脱搜索栏时。我需要一种方法来找出搜索栏失去焦点的时间。我尝试使用setOnFocusChangeListener但它似乎永远不会被调用。部分代码在

之下
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 个答案:

答案 0 :(得分:1)

所以我认为找到了一个我认为非常有效的解决方案。由于我正在使用搜索栏,因此我使用onStopTrackingTouch()方法查找用户何时抬起手指并将其用作何时移除滑块的指示器。

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