在前面的文章中,我介绍了 XUI 中对话框的使用,大家可以查看我的另一篇文章:XUI 熟练使用之(四) ----------- 各种弹出对话框的详细介绍。
在平时开发中,我们不仅会使用弹出的提示对话框,还会使用从页面底部弹出的对话框,例如分享功能等。
在 XUI 中,底部对话框的使用很简单,我就直接上代码了:
1、类似列表项的底部对话框
完整代码查看文末。
//显示底部列表对话框
private void showListDialog(){
new BottomSheet.BottomListSheetBuilder(this,true)
.setTitle("请选择你的性别")
.addItem("男")//设置列表中的项,该方法既设置了选项内容又设置了选项 tag 属性。
.addItem("女")
.addItem("保密")
.addItem(R.drawable.icon_more_operation_share_moment,"带图标的选项","文字tag")
//.setIsCenter(true)//文字居中对齐
.setCheckedIndex(2)//设置默认选中项,需要设置 needRightMark 为 true
.setOnSheetItemClickListener(new BottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() {
@Override
public void onClick(BottomSheet dialog, View itemView, int position, String tag) {
XToast.normal(MainActivity.this,"您选择了 "+tag).show();
dialog.dismiss();//关闭对话框
}
})
.setOnBottomDialogDismissListener(new DialogInterface.OnDismissListener() {
//对话框关闭时执行
//用户点击其他任意地方会关闭对话框
@Override
public void onDismiss(DialogInterface dialogInterface) {
XToast.normal(MainActivity.this,"对话框关闭了").show();
}
})
.build()
.show();
}
2、宫格类型的底部对话框
该类型的对话框用的最多的就是 app 的分享功能中。
//显示宫格类型的底部对话框
private void showGridDialog(){
BottomSheet.BottomGridSheetBuilder builder = new BottomSheet.BottomGridSheetBuilder(this);
builder
.addItem(R.drawable.icon_more_operation_share_friend, "分享到微信", 0, BottomSheet.BottomGridSheetBuilder.FIRST_LINE)
//设置对话框中的某一项
//图标资源,选项文字内容,tag,选项在对话框的第几行
.addItem(R.drawable.icon_more_operation_share_moment, "分享到朋友圈", 1, BottomSheet.BottomGridSheetBuilder.FIRST_LINE)
.addItem(R.drawable.icon_more_operation_share_weibo, "分享到微博", 2, BottomSheet.BottomGridSheetBuilder.FIRST_LINE)
.addItem(R.drawable.icon_more_operation_share_chat, "分享到私信", 3, BottomSheet.BottomGridSheetBuilder.FIRST_LINE)
.addItem(R.drawable.icon_more_operation_save, "保存到本地", 4, BottomSheet.BottomGridSheetBuilder.SECOND_LINE)
.setOnSheetItemClickListener(new BottomSheet.BottomGridSheetBuilder.OnSheetItemClickListener() {
@Override
public void onClick(BottomSheet dialog, BottomSheetItemView itemView) {
dialog.dismiss();
int tag = (int) itemView.getTag();
XToast.normal(MainActivity.this,"点击了第 "+ tag+" 个").show();
}
})
.build()
.show();
}
3、 完整示例代码
在开始之前需要先将 XUI 引入到你的项目中,可以参考我的另一篇文章:XUI 熟练使用之(一) ----------- 将 XUI 引入项目 。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/showListDialog"
android:text="显示底部列表对话框"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/showGridDialog"
android:text="显示底部宫格对话框"/>
</LinearLayout>
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button mShowListDialog;
private Button mShowGridDialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
setListener();
}
//显示底部列表对话框
private void showListDialog(){
new BottomSheet.BottomListSheetBuilder(this,true)
.setTitle("请选择你的性别")
.addItem("男")//设置列表中的项,该方法既设置了选项内容又设置了选项 tag 属性。
.addItem("女")
.addItem("保密")
.addItem(R.drawable.icon_more_operation_share_moment,"带图标的选项","文字tag")
//.setIsCenter(true)//文字居中对齐
.setCheckedIndex(2)//设置默认选中项,需要设置 needRightMark 为 true
.setOnSheetItemClickListener(new BottomSheet.BottomListSheetBuilder.OnSheetItemClickListener() {
@Override
public void onClick(BottomSheet dialog, View itemView, int position, String tag) {
XToast.normal(MainActivity.this,"您选择了 "+tag).show();
dialog.dismiss();//关闭对话框
}
})
//对话框关闭时执行
//用户点击其他任意地方会关闭对话框
.setOnBottomDialogDismissListener(new DialogInterface.OnDismissListener() {
@Override
public void onDismiss(DialogInterface dialogInterface) {
XToast.normal(MainActivity.this,"对话框关闭了").show();
}
})
.build()
.show();
}
//显示宫格类型的底部对话框
private void showGridDialog(){
BottomSheet.BottomGridSheetBuilder builder = new BottomSheet.BottomGridSheetBuilder(this);
builder
.addItem(R.drawable.icon_more_operation_share_friend, "分享到微信", 0, BottomSheet.BottomGridSheetBuilder.FIRST_LINE)
//设置对话框中的某一项
//图标资源,选项文字内容,tag,选项在对话框的第几行
.addItem(R.drawable.icon_more_operation_share_moment, "分享到朋友圈", 1, BottomSheet.BottomGridSheetBuilder.FIRST_LINE)
.addItem(R.drawable.icon_more_operation_share_weibo, "分享到微博", 2, BottomSheet.BottomGridSheetBuilder.FIRST_LINE)
.addItem(R.drawable.icon_more_operation_share_chat, "分享到私信", 3, BottomSheet.BottomGridSheetBuilder.FIRST_LINE)
.addItem(R.drawable.icon_more_operation_save, "保存到本地", 4, BottomSheet.BottomGridSheetBuilder.SECOND_LINE)
.setOnSheetItemClickListener(new BottomSheet.BottomGridSheetBuilder.OnSheetItemClickListener() {
@Override
public void onClick(BottomSheet dialog, BottomSheetItemView itemView) {
dialog.dismiss();
int tag = (int) itemView.getTag();
XToast.normal(MainActivity.this,"点击了第 "+ tag+" 个").show();
}
})
.build()
.show();
}
private void initView(){
mShowListDialog = findViewById(R.id.showListDialog);
mShowGridDialog = findViewById(R.id.showGridDialog);
}
private void setListener(){
mShowListDialog.setOnClickListener(this);
mShowGridDialog.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.showListDialog:
showListDialog();
break;
case R.id.showGridDialog:
showGridDialog();
break;
}
}
}
示例代码项目地址:在 bottomdialogmoudle moudle 中。