0

在我的应用程序中,我只想在数据不为空时填充滑动绘制。因此,当用户按下滑动抽屉处理程序时,它应该给出一个对话框“数据为空”并且滑动抽屉不应该打开。

我已经尝试过Handler.setOnTouchListener()但发生的情况是在任何调用触摸事件的地方出现该对话框。

有什么建议么?

4

1 回答 1

0

你应该看看方法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其构造函数或添加一个可以设置数据的方法。

于 2011-11-30T10:22:57.657 回答