在Pull of ActionBar / ToolBar项目上显示布局

时间:2015-05-05 03:10:56

标签: android android-actionbar android-actionbar-compat android-toolbar

我想在Pull of ActionBar / ToolBar项目上显示布局。此布局必须覆盖ActionBar / ToolBar,换句话说,此布局必须在ActionBar / Toolbar上显示。

此要求类似于Android的默认通知抽屉。

我有一个ToolBar和一个项目。如果我拉动该项目,则新布局必须来自具有固定高度的顶部,并且可以通过点击具有拉动效果的ToolBar项目来关闭此布局。

我试过Umano的SlidingPanel无法成功。

我使用了DialogPlus库。我更接近我的要求。使用DialogPlus可以通过单击ToolBar项目来实现,但是缺少拉动效果。

如何使用拉效显示/隐藏布局?

enter image description here

2 个答案:

答案 0 :(得分:1)

这是一个简单的xml文件

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:animateLayoutChanges="true"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#0061C2"
        android:minHeight="?attr/actionBarSize"
        app:popupTheme="@style/Theme.AppCompat.Light.DarkActionBar"
        app:theme="@style/Toolbar"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <RelativeLayout
        android:id="@+id/myLayout"
        android:layout_width="fill_parent"
        android:layout_height="200dp"
        android:background="#ffff7100"
        android:visibility="gone">

    </RelativeLayout>

</RelativeLayout>

工具栏是behinf“myLayout”,所以如果“myLayout”可见,它将隐藏工具栏 在你的java中,点击该项

  (findViewById(R.id.myLayout).setVisibility(View.VISIBLE);

并将显示一个布局,你将获得一个动画,因为我正在使用

android:animateLayoutChanges="true"

在myLayout的底部添加相同的项目,并将其添加为onClickListener

(findViewById(R.id.myLayout).setVisibility(View.GONE);

您可以使用工具栏

执行此操作

答案 1 :(得分:0)

做一些事情以响应手势工具gestureListener。对于这种情况,您可以创建一个匿名内部类,或者您可以立即实现SimpleGestureListener,并且在onFling方法中,您可以编写逻辑以更改布局。

public class MainActivity extends Activity implements 
    GestureDetector.OnGestureListener,
    GestureDetector.OnDoubleTapListener{

private GestureDetectorCompat mDetector; 

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

...
//other unimplemented methods..

@Override
public boolean onFling(MotionEvent event1, MotionEvent event2, 
        float velocityX, float velocityY) {
    //logic for layout change
    return true;
}
}