我正在创建一个简单的应用程序,它在顶部显示一个带有菜单的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);
}
}
一切正常,除非我滚动列表,搜索栏仍然可见。也许这不是做我想做的最好的方式,任何帮助都会非常感激。
编辑:我修改了上面的代码来修复我在点击按钮两次时遇到的错误。
答案 0 :(得分:1)
所以我认为找到了一个我认为非常有效的解决方案。由于我正在使用搜索栏,因此我使用onStopTrackingTouch()方法查找用户何时抬起手指并将其用作何时移除滑块的指示器。
public void onStopTrackingTouch(SeekBar seekBar) {
if(seekBar != null){
layout.removeView(seekBar);
seekBar = null;
}