4

当我使用时SlidingUpPanelLayout,我必须设置两个子布局(主布局和面板)。打开第二个布局(面板)时,我想使用Button. 但是我找不到方法。

方法是什么?

4

3 回答 3

12

底部的最后一个版本

如果我理解你,你想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
于 2014-04-03T04:19:02.963 回答
1

这是最新版本的 com.sothree.slidinguppanel:library

  1. 声明 SlidingUpPanelLayout

    SlidingUpPanelLayout mSlideUpPanel;

  2. 初始化它:

    mSlideUpPanel = (SlidingUpPanelLayout) findViewById(R.id.slidingUpPanel);

  3. 对于听众:

    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) {
    
            }
        });
    
于 2017-02-13T10:07:47.207 回答
0

使用新版本使用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;
    }
于 2018-04-23T10:14:36.153 回答