【Android】Dialog以及自定义Dialog

来源:互联网 发布:衣服布料淘宝 编辑:程序博客网 时间:2024/04/29 19:18

先准备自定义Dialog的三张图片素材:

背景图片dialog_bg.png:

标题图片dialog_title_image.png:

标题与内容的分割线图片lins.png:


下面贴代码。

自定义Dialog:

package com.zzj.ui.dialogdemo;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.widget.Button;import android.widget.TextView;import com.zzj.ui.R;public class MyDialog extends Dialog {private Button okBtn, cancelBtn;private TextView messageText;public MyDialog(Context context) {super(context, R.style.MyDialog);setContentView(R.layout.dialog);okBtn = (Button) findViewById(R.id.dialog_button_ok);cancelBtn = (Button) findViewById(R.id.dialog_button_cancel);messageText = (TextView) findViewById(R.id.message_text);}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setCanceledOnTouchOutside(false);}/** * 确定事件 *  * @param clickListener */public void setOKClick(android.view.View.OnClickListener clickListener) {okBtn.setOnClickListener(clickListener);}/** * 取消事件 *  * @param clickListener */public void setCancelClick(android.view.View.OnClickListener clickListener) {cancelBtn.setOnClickListener(clickListener);}/** * 设置消息内容 *  * @param text */public void setMessage(String text) {messageText.setText(text);}}

自定义Dialog布局文件:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="wrap_content"    android:layout_height="wrap_content"    android:gravity="center_vertical|center_horizontal"    android:background="@drawable/dialog_bg">    <RelativeLayout         android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:paddingLeft="30dip"        android:paddingTop="10dip">        <ImageView             android:id="@+id/dialog_title_image"            android:layout_alignParentLeft="true"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:background="@drawable/dialog_title_image"/>        <TextView             android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:layout_marginLeft="10dip"            android:layout_centerInParent="true"            android:text="Title"            android:layout_toRightOf="@id/dialog_title_image"            android:textColor="#000000"            android:textSize="30sp"/>            </RelativeLayout>    <TextView             android:layout_width="fill_parent"            android:layout_height="1dip"            android:background="@drawable/lins"            android:layout_marginTop="5dip"/>    <TextView         android:id="@+id/message_text"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:textColor="#000000"        android:text="This is a custom dialog"        android:layout_marginTop="10dip"        android:layout_marginLeft="30dip"/>    <RelativeLayout         android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:paddingTop="10dip"        android:gravity="bottom|center_horizontal"        android:paddingBottom="10dip">        <Button             android:id="@+id/dialog_button_ok"            android:layout_alignParentLeft="true"            android:layout_width="100dip"            android:layout_height="wrap_content"            android:text="确定"/>        <Button             android:id="@+id/dialog_button_cancel"            android:layout_width="100dip"            android:layout_height="wrap_content"            android:layout_toRightOf="@id/dialog_button_ok"            android:layout_marginLeft="35dip"            android:text="取消"/>    </RelativeLayout></LinearLayout>
自定义Dialog样式:
<style name="MyDialog" parent="@android:Theme.Dialog">        <item name="android:windowFrame">@null</item>        <!-- 去掉系统自带的title -->        <item name="android:windowNoTitle">true</item>        <item name="android:windowBackground">@drawable/dialog_bg</item>        <item name="android:windowIsFloating">true</item>        <item name="android:windowContentOverlay">@null</item>    </style>
Activity测试类:
package com.zzj.ui.dialogdemo;import android.app.Activity;import android.app.Dialog;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.TextView;import android.widget.Toast;import com.zzj.ui.R;public class CustomDialogActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.custom_dialog_activity);}public void click(View v) {switch (v.getId()) {case R.id.dialog_btn:Dialog dialog = new Dialog(this);dialog.setTitle("对话框");TextView textView = new TextView(this);textView.setText("这是一个最简单的对话框!");dialog.setContentView(textView);dialog.setCancelable(true);// 按回退键是否可取消对话框dialog.setCanceledOnTouchOutside(true);// 点击对话框外面是否取消对话框dialog.show();break;case R.id.coustom_dialog_btn:final MyDialog myDialog = new MyDialog(CustomDialogActivity.this);myDialog.setOKClick(new OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(CustomDialogActivity.this, "删除成功!",Toast.LENGTH_LONG).show();myDialog.dismiss();}});myDialog.setCancelClick(new OnClickListener() {@Overridepublic void onClick(View v) {Toast.makeText(CustomDialogActivity.this, "您取消了删除!",Toast.LENGTH_LONG).show();myDialog.dismiss();}});myDialog.setMessage("确定删除?");myDialog.show();break;default:break;}}}
Activity布局文件:
<?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="match_parent"    android:orientation="vertical" >    <Button        android:id="@+id/dialog_btn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="click"        android:text="弹出简单对话框" />        <Button        android:id="@+id/coustom_dialog_btn"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:onClick="click"        android:text="弹出自定义对话框" />    </LinearLayout>

运行效果:

1.系统自带的对话框。


2.自定义对话框。






0 0
原创粉丝点击