2016-03-23 214 views
2

最近,我從一個名爲walnut的Play商店安裝了一個應用程序,在那裏我看到了popup的一個新功能。在主屏幕中有一個FloatingActionMenu,點擊菜單按鈕,它將隨着它上面的項目擴展,在擴展菜單的頂部有一個用於添加帳戶的選項,並且在單擊該選項時,彈出窗口將從屏幕的底部到達特定高度。我喜歡知道什麼功能是用於屏幕底部的彈出窗口。它是一個真正的彈出式還是滑動式抽屜?我想在我的android應用程序中使用完全相同的功能。如果有人知道這個功能,請幫助我。下面是在覈桃應用程序按鈕點擊時出現的這個彈出佈局的屏幕截圖。 Popup layout from the bootom of the screenAndroid:從按鈕點擊屏幕底部顯示佈局

+0

你可以提供核桃應用程序的截圖。我幾乎不能想象你想要實現什麼 – ribads

+0

是的,我會附上這個。請等待.. – KJEjava48

+0

@ribads我附上了截圖。請看看這個。 – KJEjava48

回答

8

,您可以使用對話框,在它的自定義佈局。只有你所要做的事情就是從底層調用它並使用樣式爲原料對話框表這樣

final Dialog mBottomSheetDialog = new Dialog(getActivity(), R.style.MaterialDialogSheet); 
          mBottomSheetDialog.setContentView(view); // your custom view. 
          mBottomSheetDialog.setCancelable(true); 
          mBottomSheetDialog.getWindow().setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 
          mBottomSheetDialog.getWindow().setGravity(Gravity.BOTTOM); 
          mBottomSheetDialog.show(); 

我改變我的佈局高度800,而不是包的內容,這裏是結果。

style.xml

<style name="MaterialDialogSheet" parent="@android:style/Theme.Dialog"> 
     <item name="android:windowIsTranslucent">true</item> 
     <item name="android:windowBackground">@android:color/transparent</item> 
     <item name="android:windowContentOverlay">@null</item> 
     <item name="android:windowNoTitle">true</item> 
     <item name="android:backgroundDimEnabled">true</item> 
     <item name="android:windowIsFloating">false</item> 
     <item name="android:windowAnimationStyle">@style/MaterialDialogSheetAnimation</item> 
    </style> 



<style name="MaterialDialogSheetAnimation"> 
     <item name="android:windowEnterAnimation">@anim/popup_show</item> 
     <item name="android:windowExitAnimation">@anim/popup_hide</item> 
    </style> 

阿尼姆

popup_show.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
     android:fromYDelta="100%p" 
     android:toYDelta="0" 
     android:duration="300" 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator"/> 
</set> 

popup_hide.xml

<?xml version="1.0" encoding="utf-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <translate 
     android:fromYDelta="0" 
     android:toYDelta="100%p" 
     android:duration="300" 
     android:interpolator="@android:anim/accelerate_decelerate_interpolator"/> 
</set> 

enter image description here

+0

可能是因爲效果完全相同。等待我將發送我的彈出圖像。 – KDeogharkar

+0

看到我的更新答案@ KJEjava48 – KDeogharkar

+0

是的,讓我知道。 – KDeogharkar

1

使用小吃吧爲實現這一

Snackbar snackbar = Snackbar 
     .make(coordinatorLayout, "Welcome to AndroidHive", Snackbar.LENGTH_LONG); 

snackbar.show(); 

XML設計:

<android.support.design.widget.AppBarLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> 

     <android.support.v7.widget.Toolbar 
      android:id="@+id/toolbar" 
      android:layout_width="match_parent" 
      android:layout_height="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      app:layout_scrollFlags="scroll|enterAlways" 
      app:popupTheme="@style/ThemeOverlay.AppCompat.Light" /> 
    </android.support.design.widget.AppBarLayout> 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" 
     android:paddingLeft="20dp" 
     android:paddingRight="20dp" 
     app:layout_behavior="@string/appbar_scrolling_view_behavior"> 

     <Button 
      android:id="@+id/btnSimpleSnackbar" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="30dp" 
      android:text="Simple Snackbar" /> 

     <Button 
      android:id="@+id/btnActionCallback" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:text="With Action Callback" /> 

     <Button 
      android:id="@+id/btnCustomSnackbar" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:text="Custom Color" /> 

    </LinearLayout> 

    <android.support.design.widget.FloatingActionButton 
     android:id="@+id/fab" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="end|bottom" 
     android:layout_margin="16dp" 
     android:src="@android:drawable/ic_dialog_email" /> 

</android.support.design.widget.CoordinatorLayout> 

的build.gradle

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:appcompat-v7:23.0.1' 
    compile 'com.android.support:design:23.0.1' 
} 

參考了從Here

+0

我認爲快餐欄是用來顯示帶有動作的消息。它只包含一個textView和一個動作,根據我的知識。我認爲我們不能用xml佈局來定製它。查看截圖中的佈局我附上了我的問題。 – KJEjava48

+0

我發佈了此答案之前添加屏幕截圖 – Amy

+0

ok.no問題... – KJEjava48

2

你有什麼是自定義視圖。所以嘗試使用SnackBar會太麻煩。但是,您可以使用底部表格(https://github.com/Flipboard/bottomsheet)更輕鬆地實現此目的。

+0

有沒有辦法做到這一點,而不使用第三方庫?當然是 – KJEjava48

+0

。您只需要一種方法將自定義視圖充滿到您的活動中。然後根據揭示視圖的事件管理其可見性(可能是動畫)。更不用說,您還需要處理活動中的狀態費用,例如BackPress,旋轉和其他可能影響佈局的更改。 – ribads

相關問題