Umano AndroidSlidingUpPanel拖动面板,高度= 0

时间:2016-10-25 10:36:44

标签: android

我遇到了Umano AndroidSlidingUpPanel的问题,我似乎找不到解决办法。我想要两个视图,一个在另一个上面,可以选择向上和向下滚动,就像在https://github.com/umano/AndroidSlidingUpPanel的演示中一样,它完美无缺。但是,我希望顶视图在折叠时完全隐藏,就好像sothree:umanoPanelHeight =“0dp”。这条线的问题是当高度为0时我无法到达面板。 当您从左侧滑入菜单并从右侧滑回菜单时,Google地图具有我想要的功能。

我的代码与演示中的代码非常相似,所以我认为在这里粘贴任何代码都没有意义。我对其他解决方案的选择持开放态度,但我需要向后兼容早期的Android版本。

感谢您的任何意见!

1 个答案:

答案 0 :(得分:1)

我想要一个类似的功能:我希望将面板高度保持为0并在滑动时展开。

  1. 制作自定义布局并覆盖onTouchIntercepted方法
  2. 添加逻辑以调用并从活动(使用界面)
  3. 设置回调事件
  4. 在您的活动中,按ID查找自定义视图并设置新的回调,在回调中将您的面板状态设置为PanelState.EXPANDED
  5. 此处以及我从Github页面获得的示例类由贡献者提供:

    public class SlidingAwareLinearLayout extends LinearLayout {
      public SlidingAwareLinearLayout(final Context context) {
        super(context);
    }
    
    public SlidingAwareLinearLayout(final Context context, final AttributeSet attrs) {
        super(context, attrs);
    }
    
    public SlidingAwareLinearLayout(
            final Context context, final AttributeSet attrs, final int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }
    
    public SlidingAwareLinearLayout(
            final Context context, final AttributeSet attrs, final int defStyleAttr,
            final int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }
    
    @Override
    public boolean onInterceptTouchEvent(final MotionEvent ev) {
        SlidingUpPanelLayout panel = (SlidingUpPanelLayout) getParent();
        if (ev.getAction() == MotionEvent.ACTION_DOWN 
                && panel.getPanelState() == SlidingUpPanelLayout.PanelState.ANCHORED) {
            panel.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED);
            return true;
        }
    
        return super.onInterceptTouchEvent(ev);
    }
    }
    

    资源:https://github.com/umano/AndroidSlidingUpPanel/issues/476