Dialog总结二--自定义

来源:互联网 发布:网络研修收获与反思 编辑:程序博客网 时间:2024/06/03 21:21

        在dialog实现中,如果就用系统自带的显示风格已经满足不了大家的需求,那么我们就需要自定义显示的界面,那我们就直接把弹出框看成是一个View的界面(也就是一个布局)我们可以在里面去设计显示内容;下面我们就来看下实现的代码:

下面是在一个Activity中的一个打开Dialog的方法;

方法里面调DialogViewsTypeAsk()时共传了5个参数:

           Context context,上下文

           boolean showtwo,是否显示两个按钮(及删除和取消)

    DialogViews_ask listener,两个按钮回调的接口

    String content, 需要显示的内容

   String leftBtn, 左按钮显示名称

   String rightBtn右按钮名称

private void showDeleteLinkDialog(final TNPGetListRegisterAppOutput tnpBizLink) {
        DialogViewsTypeAsk dialog = new DialogViewsTypeAsk(mView.getContext(), true,
                new DialogViewsTypeAsk.DialogViews_ask() {
                    @Override
                    public void doOk() {
                      //操作
                    }


                    @Override
                    public void doCancel() {
                    //操作

                    }
                }, "删除小组成员",“ 删除”,“取消”);
        dialog.show();
    }

在这里我们的DialogViewsTypeAsk 类继承了Dialog,在里面自定义View来显示你所想要的界面效果,里面用到了DialogViews_ask 接口回调,直接把操作回调到调DialogViewsTypeAsk 的界面去处理;如果你想要设置Dialog的风格你可以通过super(context, R.style.dialog_normal);来设置;

public class DialogViewsTypeAsk extends Dialog {

 // 确定
    private Button btn_ok;
    // 取消
    private Button btn_cancle;
   
    public DialogViews_ask mAction_ask;
public interface DialogViews_ask {
        void doOk();
        void doCancel();
    }

 public DialogViewsTypeAsk(Context context, boolean showtwo, DialogViews_ask listener,
            String content, String leftBtn, String rightBtn) {
        super(context, R.style.dialog_normal);
        this.context = context;
        setContentView(R.layout.dialog_ask);
        this.mAction_ask = listener;
        TextView tv_message = (TextView)findViewById(R.id.Tv_message_dialgask);
        //TextView tv_title = (TextView)findViewById(R.id.Tv_title_dialgask);
        tv_message.setVisibility(View.VISIBLE);
        tv_title.setVisibility(View.GONE);
        tv_message.setText(content);
        // 实例化
        // 确定
        btn_ok = (Button)findViewById(R.id.Btn_okdialog_dialogask);
        // 取消
        btn_cancle = (Button)findViewById(R.id.Btn_cancledialog_dialogask);
        btn_ok.setText(leftBtn);
        btn_cancle.setText(rightBtn);
        if (!showtwo) {
            btn_cancle.setVisibility(View.GONE);
            findViewById(R.id.line1).setVisibility(View.GONE);
            findViewById(R.id.line2).setVisibility(View.GONE);
        }
        // 数据填充
        setDataAndListener();
    }


 /**
     * 数据填充和添加监听
     */
    private void setDataAndListener() {
        // 确定
        btn_ok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                close();
                if (mAction_ask != null) {
                    mAction_ask.doOk();
                }
            }
        });
        // 取消
        btn_cancle.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                close();
                if (mAction_ask != null) {
                    mAction_ask.doCancel();
                }
            }
        });
    }

}

下面是R.layout.dialog_ask的布局

<?xml version="1.0" encoding="UTF-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:layout_margin="20dip"
        android:background="@drawable/org_pop_bg"
        android:orientation="vertical" >
        <!-- 标题 -->
        <View
            android:layout_width="15dip"
            android:layout_height="15dip" />


        <TextView
            android:id="@+id/Tv_title_dialgask"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dip"
            android:layout_marginLeft="15dip"
            android:layout_marginRight="15dip"
            android:gravity="center_vertical|center_horizontal"
            android:minHeight="30dip"
            android:textColor="@color/c12"
            android:textSize="16sp" />
        <TextView
            android:id="@+id/Tv_message_dialgask"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dip"
            android:layout_marginLeft="15dip"
            android:layout_marginRight="15dip"
            android:gravity="center_vertical|center_horizontal"
            android:text=""
            android:textColor="@color/c12"
            android:textSize="16sp"
            android:visibility="gone" />
        <!-- 横线 -->


        <View
            android:layout_width="fill_parent"
            android:layout_height="0.3dip"
            android:background="@color/guide_light_gray" />
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="39dip"
            android:orientation="horizontal" >
            <!-- 确定 -->
            <Button
                android:id="@+id/Btn_okdialog_dialogask"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1.0"
                android:background="@drawable/dialog_ask_btn_selector"
                android:gravity="center"
                android:text="@string/finish"
                android:textColor="@drawable/org_blue_black_select"
                android:textSize="16sp" />

            <View
                android:id="@+id/line1"
                android:layout_width="0.3dip"
                android:layout_height="fill_parent"
                android:background="@color/guide_light_gray" />
            <!-- 取消 -->
           
            <Button
                android:id="@+id/Btn_cancledialog_dialogask"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1.0"
                android:background="@drawable/dialog_ask_btn_selector"
                android:gravity="center"
                android:text="@string/cancel"
                android:textColor="@drawable/org_blue_black_select"
                android:textSize="16sp" />
        </LinearLayout>
    </LinearLayout>
</RelativeLayout>

效果图如下:



!!!!!不是完整的代码,只为总结,有错的地方还望理解;


0 0