开发者社区> 凌浩雨> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Android AlertDialog使用

简介: 本示例功能为点击按钮,弹出对话框,自定义AlertDialog的布局View,获取输入框EditText中的内容,点击确定按钮以及空白处不关闭对话框。 创建布局文件,设置按钮的点击事件。
+关注继续查看

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

  1. 创建布局文件,设置按钮的点击事件。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    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"
    >

  <Button
      android:onClick="open"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="显示对话框"
      />
</RelativeLayout>

主页面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){

  }
}
  1. 接下来的代码都写在open(View view)这个函数中。首先创建出AlertDialog的布局文件,如下:
<?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:gravity="center"
    android:layout_margin="50dp"
    android:padding="15dp"
    android:orientation="vertical">

    <TextView
        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" />

    <EditText
        android:textSize="16sp"
        android:layout_marginTop="20dp"
        android:id="@+id/et_number"
        android:hint="请输入文字"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>
  1. 现在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);
  1. 创建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(); // 显示对话框
  }
  1. 设置是否关闭对话框,函数内容:
  /**
   * 设置对话框是否显示
   * @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();
    }
  }
  1. 点击空白处不关闭对话框,应添加
    .setCancelable(false) // 设置点击空白处不关闭
    其中false为不关闭,true为关闭。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Android AlertDialog去除黑边白边自定义布局(转)
LayoutInflater inflater = this.getLayoutInflater(); View view = inflater.inflate(R.layout.test_alertdialog_listview,null); ListView lv = (ListView)view.
906 0
安卓开发_使用AlertDialog实现对话框
示例: 一、确定对话框 1 AlertDialog.Builder builder = new AlertDialog.Builder(this); 2 builder.
838 0
关于安卓开发使用AlertDialog实现按钮对话框
AlertDialog 类的功能非常强大,它不仅可以生成带按钮的提示对话框,还可以生成带列表的对话框。 使用AlertDialog实现对话框建一个layout文件 alert.xml  添加一个按钮 命名为:显示带取消中立确定按钮的对话框建一个activity  AlertDialog_lianxi.
763 0
创建自定义布局的AlertDialog
1、创建LayoutInflater  LayoutInflater li=LayoutInflater.from(this); 2、填充布局 View quakeDetailsView=li.inflate(R.
648 0
+关注
凌浩雨
毕业于贵州大学大数据与信息工程学院,目前是一名移动端工程师,就职于北京乾元大通信息技术有限责任公司。
397
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载