在我的应用程序中,我想仅在数据不为空时才填充滑动绘图。 因此,当用户按下滑动抽屉处理器时,它应该给出一个对话框“数据为空”,滑动抽屉不应该打开。
我已经尝试过 Handler.setOnTouchListener(),但是在调用触摸事件的任何地方都会出现该对话框。
有什么建议吗?
答案 0 :(得分:0)
您应该查看方法setOnDrawerOpenListener
。
创建自己的OnDrawerOpenListener
并使用它来检查数据是否为空 - 如果是,则再次关闭抽屉:
private class OnDrawerOpened implements OnDrawerOpenListener {
@Override
public void onDrawerOpened() {
if( data == null )
mySlidingDrawer.close();
}
}
您需要引用SlidingDrawer
,并且需要OnDrawerOpened
才能成为内部类,因此您可以访问SlidingDrawer
的引用。
<强>替代强>
您还可以通过扩展SlidingDrawer
创建自己的子类,然后覆盖animateOpen()
和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
}
}
如果您这样做,则需要在XML中引用自己的SlidingDrawer
实现:
<com.myPackage.MySlidingDrawer>
...
</com.myPackage.MySlidingDrawer>
取决于如何以及何时获取数据以检查null,您可能希望在其构造函数中将其传递给MySlidingDrawer
,或者添加一个方法来设置数据。