View(视图)——对话框之自定义对话框

一.自定义对话框

1.不能直接实例化使用

2.使用内部构造器来生成对话框

3.new  AlertDialog.Builder(context)  实例化构造器

1-setTitle (标题)

2-setMessage (消息)

3-按钮

1°确认按钮  setPositiveButton(“文字”,点击事件监听器)

2°否认按钮  setNegativeButton(“文字”,点击事件监听器)

3°中立按钮  setNeutralButton(“文字”,点击事件监听器)

4-show() 创建后显示对话框,并返回AlertDialog实例

5-create() 生成对话框并返回

6-setCancelable(true/false)

4.Builder方法

setView();

1-1.用加载器加载layout文件

1°第一种方式:LayoutInflater layoutInflater=getLayoutInflater();

layoutInflater.inflate();

2°第二种方式:View.inflate(context, layout文件的id, Viewl);

2-2.纯java代码定义View

5.获得Layout中的组件

调用容器的findViewById(id)

1-加载了Layout文件的View

2-当前自定义对话框实例,在按钮的OnClick回调方法里,AlertDialog a1 = (AlertDialog) dialog;

二.自定义对话框

1.用加载器加载layout文件方法

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.example.wang.testapp2.TestActivity5"
11     android:orientation="vertical">
12
13
14     <Button
15         android:layout_width="match_parent"
16         android:layout_height="wrap_content"
17         android:text="自定义对话框"
18         android:onClick="bt4_OnClick"
19         />
20
21
22
23 </LinearLayout>

用加载器加载layout文件方法

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:orientation="vertical" android:layout_width="match_parent"
 4     android:layout_height="match_parent">
 5
 6     <ImageView
 7         android:layout_width="wrap_content"
 8         android:layout_height="wrap_content"
 9         android:src="@drawable/car"
10         android:layout_gravity="center"/>
11 </LinearLayout>

Dialoglayout

 1 package com.example.wang.testapp2;
 2
 3 import android.app.AlertDialog;
 4 import android.app.DatePickerDialog;
 5 import android.app.TimePickerDialog;
 6 import android.content.DialogInterface;
 7 import android.opengl.ETC1Util;
 8 import android.support.v7.app.AppCompatActivity;
 9 import android.os.Bundle;
10 import android.view.LayoutInflater;
11 import android.view.View;
12 import android.widget.DatePicker;
13 import android.widget.EditText;
14 import android.widget.ImageView;
15 import android.widget.TimePicker;
16 import android.widget.Toast;
17
18 import java.util.Calendar;
19
20 public class TestActivity5 extends AppCompatActivity {
21
22     @Override
23     protected void onCreate(Bundle savedInstanceState) {
24         super.onCreate(savedInstanceState);
25         setContentView(R.layout.activity_test5);
26
27     }
28
29     //自定义对话框
30     public void bt4_OnClick(View v)
31     {
32         //1.layout文件加载器
33         LayoutInflater layoutInflater=getLayoutInflater();
34
35         View view=layoutInflater.inflate(R.layout.dialoglayout, null);
36
37         //2.View的静态方法
38 //        View view=View.inflate(this, R.layout.dialoglayout, null);
39
40
41
42         new AlertDialog.Builder(this)
43                 .setTitle("自定义对话框")
44
45                 //.setView(R.layout.dialoglayout)
46                 .setView(view)
47
48                 .setPositiveButton("确定", null)
49
50                 .show();
51     }
52
53 }

用加载器加载layout文件方法

2.纯java代码定义View

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.example.wang.testapp2.TestActivity5"
11     android:orientation="vertical">
12
13
14     <Button
15         android:layout_width="match_parent"
16         android:layout_height="wrap_content"
17         android:text="自定义对话框"
18         android:onClick="bt4_OnClick"
19         />
20
21
22 </LinearLayout>

纯java代码定义View

 1 package com.example.wang.testapp2;
 2
 3 import android.app.AlertDialog;
 4 import android.app.DatePickerDialog;
 5 import android.app.TimePickerDialog;
 6 import android.content.DialogInterface;
 7 import android.opengl.ETC1Util;
 8 import android.support.v7.app.AppCompatActivity;
 9 import android.os.Bundle;
10 import android.view.LayoutInflater;
11 import android.view.View;
12 import android.widget.DatePicker;
13 import android.widget.EditText;
14 import android.widget.ImageView;
15 import android.widget.TimePicker;
16 import android.widget.Toast;
17
18 import java.util.Calendar;
19
20 public class TestActivity5 extends AppCompatActivity {
21
22     @Override
23     protected void onCreate(Bundle savedInstanceState) {
24         super.onCreate(savedInstanceState);
25         setContentView(R.layout.activity_test5);
26
27     }
28
29     //自定义对话框
30     public void bt4_OnClick(View v)
31     {
32
33         //3.java代码
34         ImageView view=new ImageView(this);
35
36         view.setImageResource(R.drawable.ccc);
37
38
39         new AlertDialog.Builder(this)
40                 .setTitle("自定义对话框")
41
42                 //.setView(R.layout.dialoglayout)
43                 .setView(view)
44
45                 .setPositiveButton("确定", null)
46
47                 .show();
48     }
49
50 }

纯java代码定义View

三.登录对话框

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
 3     xmlns:tools="http://schemas.android.com/tools"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:paddingBottom="@dimen/activity_vertical_margin"
 7     android:paddingLeft="@dimen/activity_horizontal_margin"
 8     android:paddingRight="@dimen/activity_horizontal_margin"
 9     android:paddingTop="@dimen/activity_vertical_margin"
10     tools:context="com.example.wang.testapp2.TestActivity5"
11     android:orientation="vertical">
12
13
14     <Button
15         android:layout_width="match_parent"
16         android:layout_height="wrap_content"
17         android:text="登录对话框"
18         android:onClick="bt5_OnClick"
19         />
20
21
22 </LinearLayout>

登录

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 3     android:orientation="vertical"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     android:layout_margin="16dp">
 7
 8     <EditText
 9         android:layout_width="match_parent"
10         android:layout_height="wrap_content"
11         android:hint="用户名"
12         android:id="@+id/et_1"
13         android:layout_margin="16dp"/>
14
15     <EditText
16         android:layout_width="match_parent"
17         android:layout_height="wrap_content"
18         android:hint="密码"
19         android:inputType="textPassword"
20         android:id="@+id/et_2"
21         android:layout_margin="16dp"/>
22 </LinearLayout>

Dialog_login

 1 package com.example.wang.testapp2;
 2
 3 import android.app.AlertDialog;
 4 import android.app.DatePickerDialog;
 5 import android.app.TimePickerDialog;
 6 import android.content.DialogInterface;
 7 import android.opengl.ETC1Util;
 8 import android.support.v7.app.AppCompatActivity;
 9 import android.os.Bundle;
10 import android.view.LayoutInflater;
11 import android.view.View;
12 import android.widget.DatePicker;
13 import android.widget.EditText;
14 import android.widget.ImageView;
15 import android.widget.TimePicker;
16 import android.widget.Toast;
17
18 import java.util.Calendar;
19
20 public class TestActivity5 extends AppCompatActivity {
21
22     @Override
23     protected void onCreate(Bundle savedInstanceState) {
24         super.onCreate(savedInstanceState);
25         setContentView(R.layout.activity_test5);
26
27     }
28
29     //登录对话框
30     public void bt5_OnClick(View v)
31     {
32         final View view=View.inflate(this,R.layout.dialog_login,null);
33
34         new AlertDialog.Builder(this)
35                 .setTitle("登录对话框")
36                 .setView(view)
37                 .setPositiveButton("登录", new DialogInterface.OnClickListener() {
38                     @Override
39                     public void onClick(DialogInterface dialog, int which) {
40
41                         //转换
42                         AlertDialog a1 = (AlertDialog) dialog;
43
44                         //获取输入信息
45                         EditText et_1 = (EditText) view.findViewById(R.id.et_1);
46
47                         Toast.makeText(TestActivity5.this, "用户名=" + et_1.getText(), Toast.LENGTH_SHORT).show();
48
49                         //验证并提示
50
51                     }
52                 })
53                 .setNegativeButton("取消", null)
54                 .show();
55
56     }
57
58 }

登录

时间: 2024-10-11 07:15:07

View(视图)——对话框之自定义对话框的相关文章

android:常用的AlertDialog对话框及自定义对话框

常用的Dialog有确认对话框,单选按钮对话框,多选按钮对话框,复选按钮对话框另外还有自定义的对话框 AlertDialog的常用方法 setTitle:为对话框设置标题 setMessage:为对话框设置内容 setIcon:为对话框设置图标 setItems设置对话框要显示的list setMultiChoiceItems:一般用于复选框显示 setSingleChoiceItem:,设置单选按钮 setNeutralButton:普通按钮 setPositiveButton:添加确定按钮

andriod之对话框--标准对话框、列表对话框、自定义对话框

listView页面布局:layout/activity_main.xml: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_hei

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

在我们的日常项目中很多地方会用到对话框,但是Android系统为我们提供的对话框样子和我们精心设计的界面很不协调,在这种情况下我们想很自由的定义对话框,或者有的时候我们的对话框是一个图片,没有标题和按钮,例如这样的一系列需求,这一篇文章我们来给大家介绍一下如何像使用Activity一样来自定义我们的对话框. 一般自定义对话框有下面几种办法: 1.重写Dialog来实现. 2.获取Dialog的Window对象实现. 3.使用WindowManager来实现. 4.使用DialogTheme来实现

Android中的普通对话框、单选对话框、多选对话框、带Icon的对话框、以及自定义Adapter和自定义View对话框详解

对话框就是一个AlertDialog,但是一个简单的AlertDialog,我们却可以将它玩出许多花样来,下面我们就来一起总结一下AlertDialog的用法.看看各位童鞋在平时的工作中否都用到了AlertDialog的这些特性. OK,废话不多说,进入我们今天的正题. 普通对话框 普通对话框就是我们最最常用的对话框,实现起来并不复杂,实现出来的效果当然也是最简单的,如下: AlertDialog dialog = new AlertDialog.Builder(this).setTitle("

Android自定义View(1):对话框-Dialog

Android系统自带的对话框,在很多android 5.0以下系统的手机上,简直目不忍视,所以UI设计基本上都需要自定义对话框,漂亮的对话框五花八门,android如何设计一种简单的自定义对话框呢. 一,Dialog需要注意的问题 android 弹出dialog必须存在所属的activity,不能凭空产生,所以dialog不能在application类里面new,必须在activity onCreate之后new. 1,默认的dialog public Dialog(Context cont

View(视图)——对话框

对话框 一.分类 警告对话框AlertDialog:①一般对话框②单选对话框③复选对话框④自定义对话框 进度对话框 日期对话框 时间对话框 二.警告对话框 AlertDialong 1.一般 不能直接实例化使用 使用内部构造器来生成对话框 new AlertDialog.Builder(context)实例化构造器:(1)setTitle(标题)(2)setMessage(消息) (3)按钮:①确认按钮 setPositiveButton("内容",点击事件监听器)②否认按钮 setN

View(视图)——对话框之日期对话框和时间对话框

一.日期对话框 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:tools="http://schemas.android.com/tools" 4 android:layout_width="matc

Android实例-手机安全卫士(十)-自定义对话框

一.目标. 当点击“手机防盗”时弹出自定义的设置密码对话框.如果已经设置密码,则弹出自定义的输入密码对话框. 二.代码实现. 1.在layout文件夹下新建xml(取名setpwddialog.xml)文件用于设置自定义对话框的UI. 新建xml文件代码如下; 1 <?xml version="1.0" encoding="utf-8"?> 2 <RelativeLayout xmlns:android="http://schemas.a

采用建造者模式自定义对话框

1.对话框视图 1 <?xml version="1.0" encoding="utf-8"?> 2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 android:layout_width="300dip" 4 android:layout_height="240dip" 5 andro