本示例功能为点击按钮,弹出对话框,自定义AlertDialog的布局View,获取输入框EditText中的内容,点击确定按钮以及空白处不关闭对话框。

创建布局文件,设置按钮的点击事件。

xmlns:tools="http://schemas.android.com/tools"

android:id="@+id/activity_main"

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context="com.mazaiting.alertdialogtest.MainActivity"

>

android:onClick="open"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="显示对话框"

/>

主页面Activity的初始配置代码

public class MainActivity extends AppCompatActivity {

@Override protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

}

/**

* 按钮打开事件

*/

public void open(View view){

}

}

接下来的代码都写在open(View view)这个函数中。首先创建出AlertDialog的布局文件,如下:

android:layout_width="match_parent"

android:layout_height="match_parent"

android:gravity="center"

android:layout_margin="50dp"

android:padding="15dp"

android:orientation="vertical">

android:id="@+id/tv_tip"

android:gravity="center"

android:text="请输入文字"

android:textColor="@android:color/black"

android:textSize="20sp"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

android:textSize="16sp"

android:layout_marginTop="20dp"

android:id="@+id/et_number"

android:hint="请输入文字"

android:layout_width="match_parent"

android:layout_height="wrap_content" />

现在open(View view)方法中,加载出布局。

// 加载布局

View dialogView = LayoutInflater.from(this).inflate(R.layout.dialog_input_id,null);

EditText et_number = (EditText) dialogView.findViewById(R.id.et_number);

创建AlertDialog, 并实现其相应设置

/**

* 按钮打开事件

*/

public void open(View view){

// 加载布局

View dialogView = LayoutInflater.from(this).inflate(R.layout.dialog_input_id,null);

final EditText editText = (EditText) dialogView.findViewById(R.id.et_number);

new AlertDialog.Builder(this) // 使用android.support.v7.app.AlertDialog

.setView(dialogView) // 设置布局

.setCancelable(false) // 设置点击空白处不关闭

.setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override public void onClick(DialogInterface dialog, int which) {

String text = editText.getText().toString();

if(TextUtils.isEmpty(text)){ // 判断输入的内容是否为空

setDialogIsShowing(dialog, false); // 设置不关闭

Toast.makeText(MainActivity.this, "内容不能为空", Toast.LENGTH_SHORT)

.show();

}else{

Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT)

.show();

}

}

}) // 设置确定按钮,并设置监听事件})

.setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override public void onClick(DialogInterface dialog, int which) {

setDialogIsShowing(dialog, true); // 设置关闭

}

}) // 设置取消按钮,并设置监听事件

.create() // 创建对话框

.show(); // 显示对话框

}

设置是否关闭对话框,函数内容:

/**

* 设置对话框是否显示

* @param dialog 对话框

* @param isClose 是否显示. true为关闭,false为不关闭

*/

private void setDialogIsShowing(DialogInterface dialog, boolean isClose) {

try {

// 获取到android.app.Dialog类

Field mShowing = dialog.getClass().getSuperclass().getSuperclass().getDeclaredField("mShowing");

mShowing.setAccessible(true); // 设置可访问

mShowing.set(dialog,isClose); // 设置是否关闭

} catch (NoSuchFieldException | IllegalAccessException e) {

e.printStackTrace();

}

}

点击空白处不关闭对话框,应添加

.setCancelable(false) // 设置点击空白处不关闭

其中false为不关闭,true为关闭。

android 获取alertdialog的view,Android AlertDialog使用相关推荐

  1. android获取当前activity view,Android中如何通过View获取Activity

    在开发过程中,我们会遇到下面情况: Button button = (Button) findViewById(R.id.btn); button.setOnClickListener(MainAct ...

  2. android子view获取父布局,Android获取布局父ID(Android get layout parent id)

    Android获取布局父ID(Android get layout parent id) 我想知道View和ViewParent有什么区别? 我想获取ImageView父级的Id,但我不能这样做: m ...

  3. android获取电池信息;android获取电池容量、技术、电压、电量、温度等信息

    android获取电池信息:android获取电池容量.技术.电压.电量.温度等信息 1.这里我仅展示工具类,需要注意的是这里的部分值要刷新后才能显示,添加刷新UI的方法即可,而且电量温度等都是变化的 ...

  4. android获取GPU信息;android获取GPU渲染器、供应商、版本和扩展名等信息

    android获取GPU信息:android获取GPU渲染器.供应商.版本和扩展名等信息 效果: 1.布局文件 <?xml version="1.0" encoding=&q ...

  5. Android获取实况天气接口, android获取实时天气预报代码

    Android获取实况天气接口, android获取实时天气预报代码 天气API的免费接口, 不需要注册key, 访问url直接返回json数据 1 调用的接口 url https://www.tia ...

  6. android获取连接wifi名称,android 获取当前连接WIFI名称的有关问题

    android 获取当前连接WIFI名称的问题 我在程序内通过以下方法获取当前连接的WIFI名称(SSID),这个也是网上找别人的,但在我程序内就获取不到呢? 1.在AndroidManifest.x ...

  7. android 获取已安装 错误代码,android获取手机已经安装的app信息

    Android获取手机已安装APP(系统/非系统) 效果图 主体代码 private ListView mlistview; private ListpackageInfoList; private ...

  8. android 获取linux线程状态,Android 的进程与线程总结

    本文翻译自Android官方文档 当一个Android应用程序组件启动时候,如果此时这个程序的其他组件没有正在运行,那么系统会为这个程序以单一线程的形式启动一个新的Linux 进程. 默认情况下,同一 ...

  9. android获取其他app布局,Android Studio查看其它APP的布局结构

    概述 日常使用别家的APP过程中,会遇到一些比较好看的布局,这时候我们就想学习一下别人的布局结构,以便参考. (1)手机连接电脑.设置手机为USB调试模式 (2)运行Android Studio,打开 ...

最新文章

  1. 万能头文件#include<bits/stdc++.h>更新GCC10.2.0版本
  2. 矩阵乘法的优化及其在卷积中的应用
  3. 这回导师们颤抖了,这个网站能匿名评价其“人品”,已有大量“不良”导师被爆...
  4. C++Fenwick tree芬威克树的实现算法(附完整源码)
  5. Yii CDBCriteria常用方法
  6. [转载] 武汉天河机场大巴时刻及路线
  7. 内存问题提醒!结构体+protobuf做协议体发送!序列化
  8. Python二级笔记(6)
  9. ajax项目中使用模板
  10. 404 单页应用 报错 路由_单页应用
  11. Python笔记(二)——python调用C/C++模块
  12. 《Pro SQL Server Internals, 2nd edition》的CHAPTER 2 Tables and Indexes中的Clustered Indexes一节...
  13. 【ZOJ 4053】【青岛网络赛主席树+启发式合并】
  14. 三. SECS/GEM封装库RapidSecs开发手记-SECS/GEM基础知识-1
  15. maxlength中文和英文html,让input maxlength区分中英文
  16. python获取当前时间、今天零点、23:59:59点、昨天当前时间、明天的当前时间。
  17. 旅游企业该怎么进行网络品牌推广呢?如何宣传和规划旅游商品?
  18. AMD将用FPGA干什么?
  19. C++ 学习(基础语法篇)
  20. windows10系统修改c盘user文件夹下的计算机名称

热门文章

  1. [设计模式C++]外观模式
  2. U盘出现乱码怎么办?教你如何恢复
  3. 微信公众平台获取测试号的appID和appsecret
  4. mysql snowflake_自增ID算法snowflake
  5. PHP响应式个人博客,Thinkphp5.0开发大气响应式青春博客个人博客源码
  6. oracle的commit耗时长_ORACLE COMMIT操作的详解
  7. 劳动保障职业学院计算机专业,北京劳动保障职业学院2019年各省录取分数线详情...
  8. C语言PAT刷题 - 1009 说反话
  9. Ubuntu系统个人偏好设置
  10. 手机充电一夜不拔会影响手机寿命吗?