安卓自定义dialog

这里是使用自定义dialog的布局实现,并去除原生dialog的标题。

以下是dialog布局的xml文件:

 

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_margin="50dp"
    android:background="@android:color/transparent"
    android:gravity="center" >

    <LinearLayout
        android:id="@+id/LL_this"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginLeft="9dp"
        android:layout_marginRight="9dp"
        android:layout_marginTop="9dp"
        android:background="@drawable/rounded_background"
        android:orientation="vertical" >

        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginRight="20dp"
            android:layout_marginTop="30dp"
            android:shrinkColumns="1" >

            <TableRow>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:text="课室: " />

                <TextView
                    android:id="@+id/txt_pre_entry_dialog_classroom"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:text="数据异常" />
            </TableRow>

            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="@color/gray" />

            <TableRow>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:text="老师: " />

                <TextView
                    android:id="@+id/txt_pre_entry_dialog_teacher"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:text="数据异常" />
            </TableRow>

            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="@color/gray" />

            <TableRow>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:text="课程: " />

                <TextView
                    android:id="@+id/txt_pre_entry_dialog_course"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:text="数据异常" />
            </TableRow>

            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:background="@color/gray" />

            <TableRow>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:text="班级: " />

                <TextView
                    android:id="@+id/txt_pre_entry_dialog_classes"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_marginTop="10dp"
                    android:text="数据异常" />
            </TableRow>

            <View
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:layout_marginBottom="10dp"
                android:background="@color/gray" />
        </TableLayout>
    </LinearLayout>

    <ImageButton
        android:id="@+id/dialog_pre_entry_close"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true"
        android:background="@drawable/cancel" />

</RelativeLayout>

 

 

这里我写了其它的一些表格布局的东西,所以看起来多了一点,其实起到做用的属性代码也就几行。因为要实现在右上角偏移突出显示一个关闭的Button,这里就使用RelativeLayout了。上面的代码中第6、13、14、15行起了主要作用,有什么作用效果大家动下手修改修改就知道了。

 

然后就要到代码里去设置dialog了,如下:

 

private Dialog allMsg;
//Dialog的布局View
private View allMsgView;

// 通过LayoutInflater找到改布局
allMsgView = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.dialog_all_pre_entry_msg, null);
//创建Dialog
allMsg = new AlertDialog.Builder(this).create();
//设置点击外边缘不消失,2.x的应该是默认不消失的
allMsg.setCanceledOnTouchOutside(false);
//findView布局里的控件
imgBtn_dialog = (ImageButton) allMsgView.findViewById(R.id.dialog_pre_entry_close);
imgBtn_dialog.setOnClickListener(this);

txt_dialog_classroom = (TextView) allMsgView.findViewById(R.id.txt_pre_entry_dialog_classroom);
txt_dialog_course = (TextView) allMsgView.findViewById(R.id.txt_pre_entry_dialog_course);
txt_dialog_teacher = (TextView) allMsgView.findViewById(R.id.txt_pre_entry_dialog_teacher);
txt_dialog_classes = (TextView) allMsgView.findViewById(R.id.txt_pre_entry_dialog_classes);


然后在你需要弹出的地方调用如下:

 

 

//两句的顺序不能调换
allMsg.show();
allMsg.getWindow().setContentView((RelativeLayout) allMsgView);


取消显示,在关闭按钮的监听里关闭dialog就行了:

 

 

	/**
	 * 按钮监听
	 */
	@Override
	public void onClick(View v)
	{
		switch (v.getId())
		{
		// dialog的图片取消button
		case R.id.dialog_pre_entry_close:
			allMsg.dismiss();
			break;
		default:
			break;
		}
	}

 

 

 

效果图:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值