Bottom Sheet是什麼呢?
它提供一個管道,讓你可以在同一個Activity裡面看到別的Layout的內容,中間不需要Intent介入。

↓實際大概會像是這樣

我們會需要兩個Layout:一是主要頁面,
另一個則是要做為Bottom Sheet加入的頁面。

主頁面可以只放Button,因為今天的主角是後者。

請新增一個Layout,並且寫下以下兩個物件

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:text="Open for some Weeds"
        android:textAppearance="@style/TextAppearance.AppCompat.Display1"
        android:textColor="@android:color/white"
        android:textSize="26sp" />

    <ListView
        android:id="@+id/ListView"
        android:layout_width="match_parent"
        android:layout_height="250dp" />

回到MainActivity,並且宣告如下:

    private String[] listShowing = 
    {"Weed 1st here.","Weed 2nd right there.",
    "Weed 3rd not here dude."};

    View theSheet;
    ListView listView;
    ArrayAdapter<String> theAdapter;
    Button btn;

字串內的東西可以自行更改,不會影響。

另外宣告一個class寫BottomSheet顯示方法:

    private void showingBottomSheetDialog(){

        final BottomSheetDialog dialog = new BottomSheetDialog(this);

        theSheet = LayoutInflater.from(this).
            inflate(R.layout.bottom_sheets,null);

        listView = theSheet.findViewById(R.id.ListView);

        theAdapter = new ArrayAdapter<>(this,android.
            R.layout.simple_list_item_1,listShowing);

        listView.setAdapter(theAdapter);
        dialog.setContentView(theSheet);
        dialog.show();

    }

恭喜你,這個簡易的app快要到尾聲了。
在onCreate()寫上onClickListener就完成了:

        btn = findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                showingBottomSheetDialog();

            }
        });

執行時,按下Activity唯一一個Button
就可以看到Bottom Sheet彈跳出來

對,這跟一開始那個是同一張,呵呵。

驗收時間:

    private ______ listShowing = 
    {"Weed 1st here.","Weed 2nd right there.",
    "Weed 3rd not here dude."};

    View theSheet;
    ListView listView;
    ArrayAdapter<____> theAdapter;
    Button btn;

BottomSheetDialog顯示方法

    private void showingBottomSheetDialog(){

        final BottomSheetDialog dialog = new BottomSheetDialog(this);

        theSheet = _________.from(this).
            ______(R.layout.bottom_sheets,null);

        listView = theSheet.findViewById(R.id.ListView);

        theAdapter = new ArrayAdapter<>(this,android.
            R.layout._____________,listShowing);

        listView.setAdapter(________);
        dialog.setContentView(______);
        dialog.____();

    }

OnCLickListener部分

        btn = findViewById(R.id.btn);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {

                _______________________();

            }
        });