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你覺得它有用嗎? –