ActionBarDrawerToggle 滑动时的 onClose 事件
ActionBarDrawerToggle event onClose when sliding
我正在实现一个带有两个操作栏抽屉的 activity。
现在我在操作栏中有两个按钮显示这些抽屉,它们工作正常。如果已经打开,他们甚至会关闭另一个。
这些抽屉旨在用作列表视图的过滤器(城市和类别),我的想法是监听 OnClose 事件,这样我就可以获取选中的项目并过滤列表。
使用 "onDrawerClosed" 我可以很容易地做到这一点,但问题是当抽屉通过滑动显示时,因为事件没有被触发。
然后我一直在处理"onDrawerSlide",最后得到这个代码:
void initDrawer() {
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_home_up, R.string.app_name,
R.string.app_name) {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
if (slideOffset == 0) {
//if (!drawerLayout.isDrawerOpen(drawerView)) {
outputManager.showToast("Closed ");
//drawerClosed(drawerView);
//}
invalidateOptionsMenu(); // calls onPrepareOptionsMenu()
}
super.onDrawerSlide(drawerView, slideOffset);
}
public void onDrawerClosed(View drawerView) {
// getActionBar().setTitle(mTitle);
// calling onPrepareOptionsMenu() to show action bar icons
invalidateOptionsMenu();
drawerClosed(drawerView);
}
public void onDrawerOpened(View drawerView) {
// getActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu();
}
};
drawerLayout.setDrawerListener(drawerToggle);
}
它一直触发事件很多(我认为它触发了几次直到滑动完成),所以我检查了 slideOffset 是否为 0。它都不起作用,一个滑块起作用,但另一个不触发任何事件。
有什么想法吗?也许我可以阻止滑动并允许仅通过按钮显示抽屉,但是如何?
最后我拆掉了第二个抽屉,想出了一个不同的方法。我想我试图以一种不适合的方式使用它。
我正在实现一个带有两个操作栏抽屉的 activity。
现在我在操作栏中有两个按钮显示这些抽屉,它们工作正常。如果已经打开,他们甚至会关闭另一个。
这些抽屉旨在用作列表视图的过滤器(城市和类别),我的想法是监听 OnClose 事件,这样我就可以获取选中的项目并过滤列表。
使用 "onDrawerClosed" 我可以很容易地做到这一点,但问题是当抽屉通过滑动显示时,因为事件没有被触发。
然后我一直在处理"onDrawerSlide",最后得到这个代码:
void initDrawer() {
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.drawable.ic_home_up, R.string.app_name,
R.string.app_name) {
@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
if (slideOffset == 0) {
//if (!drawerLayout.isDrawerOpen(drawerView)) {
outputManager.showToast("Closed ");
//drawerClosed(drawerView);
//}
invalidateOptionsMenu(); // calls onPrepareOptionsMenu()
}
super.onDrawerSlide(drawerView, slideOffset);
}
public void onDrawerClosed(View drawerView) {
// getActionBar().setTitle(mTitle);
// calling onPrepareOptionsMenu() to show action bar icons
invalidateOptionsMenu();
drawerClosed(drawerView);
}
public void onDrawerOpened(View drawerView) {
// getActionBar().setTitle(mDrawerTitle);
// calling onPrepareOptionsMenu() to hide action bar icons
invalidateOptionsMenu();
}
};
drawerLayout.setDrawerListener(drawerToggle);
}
它一直触发事件很多(我认为它触发了几次直到滑动完成),所以我检查了 slideOffset 是否为 0。它都不起作用,一个滑块起作用,但另一个不触发任何事件。
有什么想法吗?也许我可以阻止滑动并允许仅通过按钮显示抽屉,但是如何?
最后我拆掉了第二个抽屉,想出了一个不同的方法。我想我试图以一种不适合的方式使用它。