本文共 2447 字,大约阅读时间需要 8 分钟。
AndroidSlidingUpPanel 可向上拖动的view
官方展示:
repositories { mavenCentral()}implementation 'com.sothree.slidinguppanel:library:3.4.0'
com.sothree.slidinguppanel.SlidingUpPanelLayout
作为根布局。gravity
设置为top
或bottom
。match_parent
。match_parent
,高度应设置为 match_parent
,wrap_content
或 android:maxWidth="xxdp"。如果您想将主界面和slidingUpPanel按比例显示于屏幕,请将其设置为 match_parent,并使用
layout_weight
为 SlidingUpPanelLayout 定义一个属性。setDragView
方法或umanoDragView
属性将拖动区域限制为特定View。
ActionBarOverlay
如果当向上滑动的时候actionbar也是跟着慢慢隐藏的,这种效果必须使用ActionBarOverlay:
同时这种情况你需要为 根布局 的 顶部 设置 margintop 为actionbar的高度,来支持较旧的API版本?android:attr/actionBarSize
or attr/actionBarSize
umanoDragView
,则面板会将click事件传递到主布局。进行第二种布局clickable
以防止这种情况。setPanelHeight
方法或umanoPanelHeight
属性来更改面板高度。shadowHeight
attribute 设置为0。setEnabled(false)
完全禁用滑动面板(包括触摸和滑动编程)setTouchEnabled(false)
以禁用面板的触摸响应(拖动和点击),你仍然可以控制面板编程getPanelState
来获得当前面板状态setPanelState
设置当前面板状态umanoParallaxOffset
属性将视差添加到主视图(有关示例,请参见演示)。setAnchorPoint
用于允许面板处于中间展开状态(类似于Google Maps)。PanelSlideListener
为监视有关滑动窗格的事件。layout_gravity
将布局的属性更改为来使面板从顶部滑动top
。umanoScrollInterpolator
属性为面板移动提供滚动插值器。例如,如果您想要面板的反弹或超调效果。setOverlayed
方法或umanoOverlay
属性使其覆盖主要内容。如果您想使滑动布局半透明,这将很有用。您也可以设置umanoClipPanel
为false以在非覆盖模式下使面板透明。umanoFadeColor
。将其设置为"@android:color/transparent"
完全消除变暗。
如果有嵌套滑动问题,请确保umanoScrollableView
将面板上的属性设置为 umanoScrollableView
。该组件支持ListView
,ScrollView
以及RecyclerView
,但是你可以通过设置自定义添加任何类型的可滚动视图的支持ScrollableViewHelper
。这是一个例子NestedScrollView
public class NestedScrollableViewHelper extends ScrollableViewHelper { public int getScrollableViewScrollPosition(View mScrollableView, boolean isSlidingUp) { if (mScrollableView instanceof NestedScrollView) { if(isSlidingUp){ return mScrollableView.getScrollY(); } else { NestedScrollView nsv = ((NestedScrollView) mScrollableView); View child = nsv.getChildAt(0); return (child.getBottom() - (nsv.getHeight() + nsv.getScrollY())); } } else { return 0; } }}
定义好以后,使用 androidSlidingUpPanel.setScrollableViewHelper
该库最初基于Android支持库r13中开源的组件