• 对话框的练习(android)


    android 中的 AlertDialog 对话框

    由 AlertDialog.builder 进行创建,创建后使用 show 显示,使用简单,代码如下

    对话框的 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:orientation
    ="vertical" >

         <TextView
            
    android:id="@+id/username"
            android:layout_width
    ="wrap_content"
            android:layout_height
    ="wrap_content"
            android:layout_marginLeft
    ="20dip"
            android:layout_marginRight
    ="20dip"
            
            android:text
    ="账号"
            android:gravity
    ="left" 
            android:textAppearance
    ="?android:attr/textAppearanceMedium"
             
    />

         <EditText 
             
    android:id="@+id/username"
             android:layout_height
    ="wrap_content"
             android:layout_width
    ="fill_parent"
             android:layout_marginLeft 
    = "20dip"
             android:layout_marginRight
    ="20dip"
             android:scrollHorizontally
    ="true"
             android:autoText
    ="false"
             android:capitalize
    ="none"
             android:gravity
    ="fill_horizontal"
             android:textAppearance
    ="?android:attr/textAppearanceMedium"
                      
    /> 
                      
         <TextView 
             
    android:id="@+id/password"
             android:layout_width
    ="wrap_content"
             android:layout_height
    ="wrap_content"
             android:layout_marginLeft
    ="20dip"
             android:layout_marginRight
    ="20dip"
             android:text
    ="密码"
             android:gravity
    ="left"
             android:textAppearance
    ="?android:attr/textAppearanceMedium"
             
             
    />
         
         <EditText 
             
    android:id="@+id/password"
             android:layout_width
    ="fill_parent"
             android:layout_height
    ="wrap_content"
             android:layout_marginLeft
    ="20dip"
             android:layout_marginRight
    ="20dip"
             android:scrollHorizontally
    ="true"
             android:autoText
    ="false"
             android:capitalize
    ="none"
             android:gravity
    ="fill_horizontal"
             android:password
    ="true"         
             
    />

    </LinearLayout>

    java 代码

    package zziss.android.dialogtest;

    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.AlertDialog.Builder;
    import android.app.Dialog;
    import android.app.ProgressDialog;
    import android.content.Context;
    import android.content.DialogInterface;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.Toast;

    public class DialogTestActivity extends Activity {
        /** Called when the activity is first created. */
        ProgressDialog m_dialog;
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            
            //Builder builder = new AlertDialog.Builder(DialogTestActivity.this);
            
    //Dialog dialog = builder.create();
            
    // dialog.setTitle("登录提示");
            /*Dialog dialog = new AlertDialog.Builder(DialogTestActivity.this)
            .setTitle("登录提示")
            .setMessage("这里需要登录")
            .setPositiveButton("确定", 
                    new DialogInterface.OnClickListener() {
                        
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            // TODO Auto-generated method stub
                            LayoutInflater factory = LayoutInflater.from(DialogTestActivity.this);
                            final View DialogView = factory.inflate(R.layout.dialog, null);
                            
                            AlertDialog dlg = new AlertDialog.Builder(DialogTestActivity.this)
                            .setTitle("登录框")
                            .setView(DialogView)
                            .setPositiveButton("确定", 
                                    new DialogInterface.OnClickListener() {
                                        
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                            // TODO Auto-generated method stub
                                            m_dialog = ProgressDialog.show(
                                                    DialogTestActivity.this, 
                                                    "请等待...", "正在为您登录...",true);
                                            new Thread()
                                            {
                                                public void run()
                                                {
                                                    try
                                                    {
                                                        sleep(3000);
                                                    }
                                                    catch(Exception e)
                                                    {
                                                        e.printStackTrace();
                                                    }
                                                    finally
                                                    {
                                                        m_dialog.dismiss();
                                                    }
                                                }
                                            }.start(); // end thread
                                        } // end ok click
                                    }
                                    )
                            .setNegativeButton("取消",
                                    new DialogInterface.OnClickListener() {
                                        
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                            // TODO Auto-generated method stub
                                            DialogTestActivity.this.finish();
                                        }
                                    }
                                    ).create();
                            dlg.show();
                            
                        };
                    }
                    
                    )
                    .setNeutralButton("退出", 
                            new DialogInterface.OnClickListener() {
                                
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    // TODO Auto-generated method stub
                                    DialogTestActivity.this.finish();
                                }
                            }
                            ).create();
            dialog.show();
    */
            initDialogClick();
            AlertDialog.Builder builder = new AlertDialog.Builder(DialogTestActivity.this);
            builder.setTitle("登录对话框");
            builder.setMessage("这里需要登录")
            .setPositiveButton("确定",dialogclick )
            .setNegativeButton("取消", dialogclick);
            Dialog dialog = builder.create();
            dialog.show();
            
            
        }
        
        private DialogInterface.OnClickListener dialogclick;
        private DialogInterface.OnClickListener dialogLoginClick;
        private void initDialogClick()
        {
            dialogclick = new DialogInterface.OnClickListener() {
                
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    if (which == dialog.BUTTON_POSITIVE)
                    {
                        showLoginDialog();
                    }
                    if (which == dialog.BUTTON_NEGATIVE)
                    {
                        showMessage("点击了取消按纽");
                    }
                }
            };
            
            dialogLoginClick =new DialogInterface.OnClickListener() {
                
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    if (which == dialog.BUTTON_POSITIVE)
                    {
                        showProgressDialog();
                    }
                    if (which == dialog.BUTTON_NEGATIVE)
                    {
                        dialog.dismiss();
                    }
                }
            }; 
            
        } // end initDialogClick
        
        private void showLoginDialog()
        {
            LayoutInflater inflater = (LayoutInflater)this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            View logindialog = inflater.inflate(R.layout.dialog, null);
            AlertDialog login = new AlertDialog.Builder(this)
            .setTitle("请登录")
            .setView(logindialog)
            .setPositiveButton("登录", dialogLoginClick)
            .setNegativeButton("取消", dialogLoginClick)
            .create();
            login.show();
        }
        
        
        private void showProgressDialog()
        {
            m_dialog = ProgressDialog.show(
                    DialogTestActivity.this
                    "请等待...", "正在为您登录...",true);
            new Thread()
            {
                public void run()
                {
                    try
                    {
                        sleep(3000);
                    }
                    catch(Exception e)
                    {
                        e.printStackTrace();
                    }
                    finally
                    {
                        m_dialog.dismiss();
                    }
                }
            }.start(); // end thread
        }
        
        private void showMessage(String str)
        {
            Toast toast = Toast.makeText(this, str, Toast.LENGTH_SHORT);
            toast.show();
        }
    }

    上面的注释中的代码是书上的,不太好看懂,所以就拆开了

    点击alertdialog之外其他屏幕,alertdialog消失/dismiss

    很简单,设置一下alertDialog的属性就行:

    AlertDialog alert = builder.create();
    alert.setCanceledOnTouchOutside(true);//详细信息可以查看官方文档
    alert.show();
  • 相关阅读:
    angular2怎么使用第三方的库(jquery等)
    线性代数:方程组的几何解释
    2016新的计划
    ES+Hbase对接方案概述
    sparkR操作HDFS上面的CSV文件
    spark1.6配置sparksql 的元数据存储到postgresql中
    spark读写Sequoiadb
    Spring Boot与Docker部署
    Docker中使用Tomcat并部署war工程
    CentOS7安装使用Docker
  • 原文地址:https://www.cnblogs.com/zziss/p/2304007.html
Copyright © 2020-2023  润新知