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) {
_______________________();
}
});