Я создаю простое приложение, которое отображает сетку с меню в верхней части. Одна из кнопок меню при нажатии помещает панель поиска в представление прямо под ней. Затем пользователь может переместить ползунок, чтобы изменить размер элементов в виде сетки. Я могу справиться с этой частью очень хорошо, проблема возникает при попытке избавиться от панели поиска. Мне нужен способ узнать, когда панель поиска потеряла фокус. Я пытался использовать 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);
}
}
Все работает, кроме тех случаев, когда я прокручиваю список, панель поиска все еще видна. Возможно, это не лучший способ сделать то, что я хочу, любая помощь будет принята с благодарностью.
РЕДАКТИРОВАТЬ: я изменил код выше, чтобы исправить ошибку, которую я получил, когда вы дважды нажимаете кнопку.