XUI 熟练使用之(五) -----------底部弹出对话框

在前面的文章中,我介绍了 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 中。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
超级 Toast博客地址:悬浮窗需求终结者已投入公司项目多时,没有任何毛病,可胜任任何需求,点击此处下载Demo想了解实现原理的可以点击此链接查看:XToast 源码本框架意在解决一些极端需求,如果是普通的 Toast 封装推荐使用 ToastUtils集成步骤dependencies {     implementation 'com.hjq:xtoast:2.0' }使用案例new XToast(XToastActivity.this) // 传入 Application 表示设置成全局的         .setView(R.layout.toast_hint)         .setDraggable() // 设置成可拖拽的 .setDuration(1000) // 设置显示时长 .setAnimStyle(android.R.style.Animation_Translucent) // 设置动画样式         .setImageDrawable(android.R.id.icon, R.mipmap.ic_dialog_tip_finish)         .setText(android.R.id.message, "点我消失")         .setOnClickListener(android.R.id.message, new OnClickListener<TextView>() {             @Override             public void onClick(XToast toast, TextView view) { // 点击这个 View 后消失                 toast.cancel();             }         })         .show();混淆规则-keep class com.hjq.xtoast.** {*;}框架亮点(原生 Toast 无法实现的功能)支持自定义 Toast 动画样式支持自定义 Toast 显示时长支持监听 Toast 的显示和销毁支持监听 Toast 中点击事件支持一键开启 Toast 拖拽功能支持 Toast 全局显示(需要权限)作者的其他开源项目架构工程:AndroidProject权限封装:XXPermissions吐司封装:ToastUtils标题栏封装:TitleBarAndroid技术讨论Q群:78797078

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值