在android中有自带的对话框,为了美观,很多开发者会使用自定义对话框,如下图:

点击“弹出自定义对话框按钮后”显示如图效果。

首先要自己定义一个xml文件定义自己对话框的样式:

<?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:background="@drawable/background"
android:orientation="vertical" > <LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:orientation="horizontal" > <ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:src="@drawable/airsign" /> <TextView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_weight="3"
android:gravity="center"
android:text="请输入密码"
android:textColor="#FFFFFFFF"
android:textSize="32px"
android:textStyle="bold" />
</LinearLayout> <EditText
android:id="@+id/et_pass"
android:layout_width="match_parent"
android:layout_height="40dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/tv_background"
android:paddingLeft="10dp"/> <LinearLayout
android:layout_marginTop="10dp"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<Button
android:id="@+id/btn_ok"
android:layout_width="wrap_content"
android:layout_height="40dp"
style="?android:attr/buttonStyleSmall"
android:layout_weight="1"
android:background="@drawable/background"
android:textColor="#FFFFFFFF"
android:text="确定"/>
<Button
android:id="@+id/btn_delete"
android:layout_marginLeft="20dp"
android:layout_width="wrap_content"
android:layout_height="40dp"
style="?android:attr/buttonStyleSmall"
android:layout_weight="1"
android:textColor="#FFFFFFFF"
android:background="@drawable/background"
android:text="取消"/>
</LinearLayout>
</LinearLayout>

mainActivity中:

public class MainActivity extends Activity {
private Context context = MainActivity.this; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
} public void clickView(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
// 创建对话框
AlertDialog dialog = builder.create();
// 没有下面这句代码会导致自定义对话框还存在原有的背景
builder.setView(View.inflate(this, R.layout.auto_dialog, null));
// 弹出对话框
dialog.show();
// 以下两行代码是对话框的EditText点击后不能显示输入法的
dialog.getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_ALT_FOCUSABLE_IM);
dialog.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
// *** 主要就是在这里实现这种效果的.
// 设置窗口的内容页面,shrew_exit_dialog.xml文件中定义view内容
Window window = dialog.getWindow();
window.setContentView(R.layout.auto_dialog);
EditText et_pass = (EditText) window.findViewById(R.id.et_pass);
final Button btn_ok = (Button) window.findViewById(R.id.btn_ok);
final Button btn_delete = (Button) window.findViewById(R.id.btn_delete);
// 为两个button按钮添加点击的监听事件
btn_ok.setOnClickListener(new OnClickListener() { @Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(context, btn_ok.getText(), 0).show();
}
});
btn_delete.setOnClickListener(new OnClickListener() { @Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Toast.makeText(context, btn_delete.getText(), 0).show();
}
});
}
}

Android自定义对话框的更多相关文章

  1. Android 自定义对话框

    Android实现自定义对话框效果: 核心代码: package com.example.diydialog; import android.os.Bundle; import android.app ...

  2. Android自定义组件系列【13】——Android自定义对话框如此简单

    在我们的日常项目中很多地方会用到对话框,但是Android系统为我们提供的对话框样子和我们精心设计的界面很不协调,在这种情况下我们想很自由的定义对话框,或者有的时候我们的对话框是一个图片,没有标题和按 ...

  3. Android自定义对话框(Dialog)位置,大小

    代码: package angel.devil; import android.app.Activity;import android.app.Dialog;import android.os.Bun ...

  4. Android 自定义对话框(Dialog)位置,大小

    代码: package angel.devil; import android.app.Activity; import android.app.Dialog; import android.os.B ...

  5. Android 自定义对话框使用静态Handler传递参数

    JsdMainDialog.java package com.jsd.demo; import android.app.Activity; import android.content.Context ...

  6. Android—关于自定义对话框的工具类

    开发中有很多地方会用到自定义对话框,为了避免不必要的城府代码,在此总结出一个工具类. 弹出对话框的地方很多,但是都大同小异,不同无非就是提示内容或者图片不同,下面这个类是将提示内容和图片放到了自定义函 ...

  7. Android中的AlertDialog使用示例五(自定义对话框)

    在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择.这些功能我们叫它Android Dialog对话框,AlertDialog实现方法为建造者模式. ...

  8. Android项目实战(七):Dialog主题Activity实现自定义对话框效果

    想必大家都用过Dialog主题的Activity吧,用它来显示自定义对话框效果绝对是一个非常不错的选择. 即把activity交互界面以Dialog的形式展现出来,Dialog主题的Activity大 ...

  9. android继承Dialog实现自定义对话框

    有时需要自定义对话框,可以使用AlterDialog.Bulider,比如下面的代码片段 new AlertDialog.Builder(self) .setTitle("标题") ...

随机推荐

  1. 编译opengl编程指南第八版示例代码通过

    最近在编译opengl编程指南第八版的示例代码,如下 #include <iostream> #include "vgl.h" #include "LoadS ...

  2. Hibernate学习之——Hibernate环境搭建

    之前在写关于安卓闹钟的教程,写了一半就没后一半了,其实自己也没做好,在校外实习,校内毕业实习又有任务,只能先放放了,等毕业实习结束之后,在继续安卓闹钟开发之旅,相信这个时间不会很久的.现在毕业实习用到 ...

  3. [OpenCV] Background subtraction

    不错的草稿.但进一步处理是必然的,也是难点所在. http://docs.opencv.org/master/d1/dc5/tutorial_background_subtraction.html#g ...

  4. 关于纠正 C/C++ 之前在函输内改变 变量的一个错误想法。

    再这之前,我曾认为,一个变量只要定义为全局变量后,即使把它以传参的方式传进去一个函数内,也能改变它的值 事实证明,这一想法是错的. 下面我用代码说明,具体注释将写在里面 #include<std ...

  5. 1Z0-053 争议题目解析134

    1Z0-053 争议题目解析134 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 134.You are managing an Oracle Database 11g datab ...

  6. Vertica的date与timestamp数据类型,to_date()与to_timestamp()函数区别

    实验环境:3节点,RHEL6.4 + Vertica 7.0.1 实验目的:了解Vertica数据库的date与timestamp数据类型,to_date()与to_timestamp()函数区别   ...

  7. java多线程--信号量Semaphore的使用

    Semaphore可以控制某个共享资源可被同时访问的次数,即可以维护当前访问某一共享资源的线程个数,并提供了同步机制.例如控制某一个文件允许的并发访问的数量. 例如网吧里有100台机器,那么最多只能提 ...

  8. 重温Servlet学习笔记--Cookie对象

    首先要了解cookie必须得先了解http协议,,Cookie是http协议指定的,先由服务器保存cookie到浏览器,在下次浏览器请求服务器时把上次请求得到的cookie归还给服务器,cookie以 ...

  9. java操作数据库增删改查的小工具2--TxQueryRunner

    当涉及到多表查询时,如数据库中有两张表分别为t_person和t_address,表结构如下: 其中t_person的外键为t-address的主键aid, 新建两个javaBean类,Person ...

  10. Cesium原理篇:6 Render模块(6: Instance实例化)

    最近研究Cesium的实例化,尽管该技术需要在WebGL2.0,也就是OpenGL ES3.0才支持.调试源码的时候眼前一亮,发现VAO和glDrawBuffers都不是WebGL1.0的标准函数,都 ...