2016-07-31 5 views
1

Ich möchte die modale Unterseite verwenden. Die Materialdesign-Richtlinie besagt, dass das vollständig erweiterte untere Blatt 8 dp unterhalb der Aktionsleiste sein sollte. Wie kann ich das erreichen? Ich möchte eine X Markierung in der Aktionsleiste behalten, um die Unterseite zu schließen, wenn sie vollständig expandiert ist.Modal Bottom Sheet: wie 8dp von Action-Leiste?

Wenn ich mit einer linearenLayout-Unterseite versuchte, dauert es den ganzen Bildschirm, wenn der Zustand erweitert wird.

Mein bottomsheet Layout

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:elevation="@dimen/design_bottom_sheet_modal_elevation" 
android:orientation="vertical"> 


<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"/> 


<Button 
    android:layout_width="match_parent" 
    android:layout_height="50dp" 
    android:layout_marginRight="10dp" 
    android:layout_marginLeft="10dp" 
    android:layout_marginTop="10dp" 
    android:layout_marginBottom="10dp" 
    android:text="ADD"/> 

</LinearLayout> 
+0

Können Sie bitte Ihr XML zeigen? –

+0

@abat, Hast du es geschafft, dies zu implementieren? – jzarsuelo

+0

@jzarsuelo: sehe meine Antwort – abat

Antwort

0

ich nicht einen einfachen Weg gefunden haben, aber hier ist das, was ich tat. Ich habe die Höhe der Statusleiste und Aktionsleiste gemessen und diese von der Bildschirmhöhe abgezogen. Funktioniert gut für mich. Nicht sicher, ob dies der beste Weg ist. `

private int getBottomSheetMaximumHeight() { 
     // get toolbar height 
     Toolbar toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar); 
     int toolbarHeight = toolbar.getHeight(); 

     //get status bar height 
     Rect rectangle = new Rect(); 
     Window window = getActivity().getWindow(); 
     window.getDecorView().getWindowVisibleDisplayFrame(rectangle); 
     int windowHeight = rectangle.bottom; 

     // material design recommended bottomsheet padding from actionbar 
     final int padding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,8, getContext().getResources().getDisplayMetrics()); 

     // maximum height of the bottomsheet 
     return windowHeight - toolbarHeight - rectangle.top - padding; 

    }`