当我使用时SlidingUpPanelLayout
,我必须设置两个子布局(主布局和面板)。打开第二个布局(面板)时,我想使用Button
. 但是我找不到方法。
方法是什么?
当我使用时SlidingUpPanelLayout
,我必须设置两个子布局(主布局和面板)。打开第二个布局(面板)时,我想使用Button
. 但是我找不到方法。
方法是什么?
底部的最后一个版本
如果我理解你,你想listener
在第二个view
打开时执行一个,对吗?
这样做的方法是这样的:
首先声明一个SlidingUpPanelLayout
:
SlidingUpPanelLayout layout;
然后,将其初始化为onCreate()
layout = (SlidingUpPanelLayout) findViewById(R.id.sliding_layout);
之后,如果您愿意,可以通过以下方式设置其子项可点击:
layout.setEnableDragViewTouchEvents(true);
现在,重要的部分是这个。将监听器添加到layout
layout.setPanelSlideListener(new PanelSlideListener() {
@Override
public void onPanelSlide(View panel, float slideOffset) {
// TODO Auto-generated method stub
}
@Override
public void onPanelCollapsed(View panel) {
// TODO Auto-generated method stub
//Anything you put here is going to happen if the view is closed
}
@Override
public void onPanelExpanded(View panel) {
// TODO Auto-generated method stub
//Anything you put here is going to happen if the view is open
}
@Override
public void onPanelAnchored(View panel) {
// TODO Auto-generated method stub
}
});
我希望这有帮助!快乐编码!
编辑:如果你想关闭和/或打开窗格,boolean
类中有两种方法:
layout.collapsePane(true); //to close
layout.expandPane(true); //to open
编辑。当前版本 示例链接
layout.setPanelState(SlidingUpPanelLayout.PanelState.COLLAPSED); //to close
layout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); //to open
这是最新版本的 com.sothree.slidinguppanel:library
声明 SlidingUpPanelLayout
SlidingUpPanelLayout mSlideUpPanel;
初始化它:
mSlideUpPanel = (SlidingUpPanelLayout) findViewById(R.id.slidingUpPanel);
对于听众:
mSlideUpPanel.addPanelSlideListener(new SlidingUpPanelLayout.PanelSlideListener() { @Override public void onPanelSlide(View panel, float slideOffset) {
}
@Override
public void onPanelStateChanged(View panel, SlidingUpPanelLayout.PanelState previousState, SlidingUpPanelLayout.PanelState newState) {
}
});
使用新版本使用setFadeOnClickListener
/**
* Provides an on click for the portion of the main view that is dimmed. The listener is not
* triggered if the panel is in a collapsed or a hidden position. If the on click listener is
* not provided, the clicks on the dimmed area are passed through to the main layout.
*
* @param listener
*/
public void setFadeOnClickListener(View.OnClickListener listener) {
mFadeOnClickListener = listener;
}