在我的应用程序中,我只想在数据不为空时填充滑动绘制。因此,当用户按下滑动抽屉处理程序时,它应该给出一个对话框“数据为空”并且滑动抽屉不应该打开。
我已经尝试过Handler.setOnTouchListener()但发生的情况是在任何调用触摸事件的地方出现该对话框。
有什么建议么?
在我的应用程序中,我只想在数据不为空时填充滑动绘制。因此,当用户按下滑动抽屉处理程序时,它应该给出一个对话框“数据为空”并且滑动抽屉不应该打开。
我已经尝试过Handler.setOnTouchListener()但发生的情况是在任何调用触摸事件的地方出现该对话框。
有什么建议么?
你应该看看方法setOnDrawerOpenListener
。
创建您自己的OnDrawerOpenListener
并使用它来检查数据是否为空 - 如果是,请再次关闭抽屉:
private class OnDrawerOpened implements OnDrawerOpenListener {
@Override
public void onDrawerOpened() {
if( data == null )
mySlidingDrawer.close();
}
}
您需要对您的引用,SlidingDrawer
并且您需要OnDrawerOpened
是一个内部类,因此您可以访问对您的SlidingDrawer
.
选择
您还可以通过扩展创建自己的子类,SlidingDrawer
然后重写animateOpen()
and方法(您可能也open()
需要重写):animateToggle()
toggle()
public class MySlidingDrawer extends SlidingDrawer {
public MySlidingDrawer( Context context, AttributeSet attrs ) {
super( context, attrs );
}
@Override
public void animateOpen() {
if( data != null )
super.animateOpen();
else
//Show dialog
}
@Override
public void open() {
if( data != null )
super.open();
else
//Show dialog
}
}
如果你这样做,你需要SlidingDrawer
在你的 XML 中引用你自己的实现:
<com.myPackage.MySlidingDrawer>
...
</com.myPackage.MySlidingDrawer>
根据获取数据以检查 null 的方式和时间,您可能希望将其传递给MySlidingDrawer
其构造函数或添加一个可以设置数据的方法。