我正在创建一个简单的应用程序,该应用程序在顶部显示一个带有菜单的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);
    }

}


一切正常,但当我滚动列表时,搜寻栏仍然可见。也许这不是做我想要的最好的方法,任何帮助将不胜感激。

编辑:我修改了上面的代码来修复当您两次单击按钮时遇到的错误。

最佳答案

因此,我认为找到了一个我认为效果很好的解决方案。由于我使用的是搜索栏,因此我使用onStopTrackingTouch()方法来找出使用者何时抬起手指,并将其用作何时移除滑块的指示。

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

关于android - android SeekBar-删除失去的焦点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9366730/

10-09 13:01