当然可以!下面是一个简单的 Android BottomSheetDialog 示例
首先,在 res/layout
目录下创建一个新的布局文件 bottom_sheet_dialog_fragment.xml
,用于定义 BottomSheetDialog 的布局内容:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" android:padding="16dp">
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="这是一个 BottomSheetDialog 示例" android:textSize="18sp" android:gravity="center" />
<Button android:layout_width="match_parent" android:layout_height="wrap_content" android:text="点击关闭 BottomSheetDialog" android:onClick="onCloseClick" />
</LinearLayout>
接下来,创建一个新的 Java 类 BottomSheetDialogFragment.java
,继承自 DialogFragment
,并重写 onCreateDialog
方法:
import android.app.Dialog;
import android.os.Bundle;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.Style;
import com.google.android.material.bottomsheet.BottomSheetDialog;
@Style(style = DialogFragment.STYLE_NORMAL)
public class BottomSheetDialogFragment extends DialogFragment {
@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {
return new BottomSheetDialog(requireContext(), R.style.BottomSheetDialogTheme);
}
}
在这个类中,我们使用了 BottomSheetDialog
类来创建一个带有自定义布局的 BottomSheetDialog。同时,我们还需要在 styles.xml
文件中定义一个名为 BottomSheetDialogTheme
的样式,以便为 BottomSheetDialog 设置主题:
<style name="BottomSheetDialogTheme" parent="Theme.MaterialComponents.Light.BottomSheetDialog"> <!-- 在这里自定义 BottomSheetDialog 的样式 --> </style>
最后,在需要显示 BottomSheetDialog 的 Activity 中,创建一个 BottomSheetDialogFragment
对象,并调用 show
方法来显示它:
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 创建一个 BottomSheetDialogFragment 对象
BottomSheetDialogFragment bottomSheetDialogFragment = new BottomSheetDialogFragment();
// 显示 BottomSheetDialog
bottomSheetDialogFragment.show(getSupportFragmentManager(), "bottom_sheet_dialog");
}
}
现在运行你的应用,当点击某个按钮时,BottomSheetDialog 应该会显示出来。