很多时候,可能Android默认的几种Dialog对话框已经不能满足我们的需求,我们需要自定义自己的Dialog对话框,包括样式的改变,功能的改变等等。今天,我给出一个Android自定义Dialog的例子,大家可以看看,如果这个自定义dialog的方法能够用得上,那我们完全可以定义出非常富有个性的dialog对话框了,先看一个自定义的dialog对话框效果图吧,很简单,只有一个Activity,当点击Button的时候就弹出这个自定义的Dialog

里面的几张图都比较丑,我不多会美工,随便用powerpoint画了几张图,原理是一样的,先不计较这些。下面正入正题

下面把源码提供给大家

新建工程在此就不贴出来了,只是为了方便大家的复制粘贴,取包名为com.and.mydialog,主Activity取名为MyDialogActivity

packagecom.and.mydialog; importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.app.Dialog;importandroid.content.DialogInterface;importandroid.os.Bundle;importandroid.view.KeyEvent;importandroid.view.LayoutInflater;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.Toast; publicclass MyDialogActivity extendsActivity {    /** Called when the activity is first created. */    @Override    publicvoid onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        Button button = (Button) findViewById(R.id.button1);        button.setOnClickListener(newOnClickListener() {             @Override            publicvoid onClick(View v) {                                 //初始化一个自定义的Dialog                Dialog dialog = newMyDialog(MyDialogActivity.this,                        R.style.MyDialog);                 dialog.show();            }        });     }}

主布局文件main.xml
<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"android:layout_width="fill_parent"    android:layout_height="fill_parent">    <Button        android:text="显示自定义Dialog"        android:id="@+id/button1"        android:layout_height="wrap_content"        android:layout_width="fill_parent"/></LinearLayout>

新建一个自定义的Dialog类,取名MyDialog,继承自Dialog

packagecom.and.mydialog; importandroid.app.Dialog;importandroid.content.Context;importandroid.os.Bundle;importandroid.view.LayoutInflater;importandroid.view.View; publicclass MyDialog extendsDialog {     Context context;    publicMyDialog(Context context) {        super(context);        // TODO Auto-generated constructor stub        this.context = context;    }    publicMyDialog(Context context, inttheme){        super(context, theme);        this.context = context;    }    @Override    protectedvoid onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        this.setContentView(R.layout.dialog);    } }

相应的布局文件dialog.xml
<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns: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:layout_width="fill_parent"        android:layout_height="wrap_content"        android:text="This is a custom dialog"        android:textColor="#000000"        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_cancel"            android:layout_alignParentLeft="true"            android:layout_width="100dip"            android:layout_height="wrap_content"            android:text="确定"/>        <Button            android:id="@+id/dialog_button_ok"            android:layout_width="100dip"            android:layout_height="wrap_content"            android:layout_toRightOf="@id/dialog_button_cancel"            android:layout_marginLeft="35dip"            android:text="取消"/>    </RelativeLayout></LinearLayout>
最主要的,是自定义的Style,我们自定义一个式样,用来改变默认的Dialog样式
在values文件夹下新建一个styles.xml文件
<?xmlversion="1.0"encoding="utf-8"?><resources>    <stylename="MyDialog"parent="@android:Theme.Dialog">        <itemname="android:windowFrame">@null</item>        <itemname="android:windowNoTitle">true</item>        <itemname="android:windowBackground">@drawable/dialog_bg</item>        <itemname="android:windowIsFloating">true</item>        <itemname="android:windowContentOverlay">@null</item>    </style></resources>

这样应该就OK了,为了方便大家测试本示例,在此一并附上不怎么好看的素材

更多相关文章

  1. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. Andrid Tv开发中下载第三方应用,解析包失败。
  6. Android之Menu基本使用(显示图标icon)
  7. android 更改avd路径
  8. Android(安卓)so lib库远程http下载和动态注册
  9. android6.0M系统在代码中实现请求以及检查权限。

随机推荐

  1. android之简单的计算器样式界面
  2. Android 隐藏显示StartBar
  3. Android ActivityManager工具类
  4. Andrdoid Sensors Overview (探测器概述)
  5. Android OneDayOneExample-1.页面互换
  6. Android View随手指移动
  7. Android(安卓)实现ListView的弹性效果
  8. Android: Bluetooth profile
  9. Android开源测试框架学习
  10. Android 3.0 硬件加速