1

我想在拉动的ActionBar/ToolBar项目上显示布局。此布局必须覆盖ActionBar/ToolBar,换言之,此布局必须在ActionBar/Toolbar顶部可见。在ActionBar/ToolBar的拉动项上显示布局项目

此要求与Android的默认通知抽屉相似。

我有一个工具栏和一个项目。如果我拉动该项目,则新的布局必须从固定高度的Top开始,并且可以通过点击该ToolBar项目上的拉动效果来关闭该布局。

我试过Umano的SlidingPanel无法成功。我用DialogPlus库。我越来越接近我的要求。使用DialogPlus它可以通过点击ToolBar项目来实现,但是拉动效果丢失。

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

enter image description here

+0

你是如何解决它的? –

+0

对不起。我没有解决 – DroidLearner

回答

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); 

为此,您可以使用工具栏

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; 
} 
} 
+0

@DroidLearner你觉得它有用吗? –