2016-07-31 9 views
1

モーダルボトムシートを使いたいです。マテリアルデザインのガイドラインによれば、完全に拡張されたボトムシートは、アクションバーの8dp下にある必要があります。どうすればこれを達成できますか?完全に展開されたときにボトムシートを閉じるためにアクションバーにXマークを残したいと思います。モーダルボトムシート:アクションバーから8dpを設定する方法は?

linearLayoutのボトムシートを試したとき、状態が拡大されると画面全体が表示されます。

マイbottomsheetレイアウト

<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

XMLを表示できますか? –

+0

@abat、これを実装できましたか? – jzarsuelo

+0

@ jzarsuelo:私の答えを見てください – abat

答えて

0

私は簡単な方法を見つけることが、ここで私がやったことではありませんでした。私はステータスバーとアクションバーの高さを測定し、それを画面高から差し引いた。私のためにうまくいく。これが最善の方法であるかどうかはわかりません。 `

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; 

    }` 
関連する問題