android开发学习 ------- 弹出框

这是一种方法,是我觉得简单易懂代码量较少的一种:

           /* 创建AlertDialog对象并显示 */
            final AlertDialog alertDialog = new AlertDialog.Builder(LoginActivity.this).create();
            alertDialog.show();
        /* 添加对话框自定义布局 */                       alertDialog.setContentView(R.layout.dialog_login);
        /* 获取对话框窗口 */
            Window window = alertDialog.getWindow();
        /* 设置显示窗口的宽高 */                      window.setLayout(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        /* 设置窗口显示位置 */
            window.setGravity(Gravity.CENTER);
        /* 通过window找布局里的控件 */
            window.findViewById(R.id.login).setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Log.e("log", "进入onclick函数体内");
                    // 隐藏对话框
                    alertDialog.dismiss();
                    //自己进行其他的处理
                }
            });
R.layout.dialog_login.xml (自己想要的样子需要在布局中设置好)
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_height="wrap_content"
    android:layout_width="match_parent"
    android:orientation="vertical"
    android:background="@drawable/dialog_corner_bg"
    android:layout_margin="20dp"       xmlns:android="http://schemas.android.com/apk/res/android">

    <Button
        android:padding="5dp"
        android:layout_marginBottom="5dp"
        android:id="@+id/login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:background="@null"
        android:text="OK"
        android:textColor="@color/btn_txt_blue"
        android:textSize="25sp"
        android:textStyle="bold" />

</LinearLayout>
dialog_corner_bg.xml (对话框的背景)
<?xml version="1.0" encoding="utf-8"?>
<!-- 用于设置信息对话框的圆角 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <corners android:radius="20dip"></corners>
    <solid android:color="@color/white"></solid>
</shape>

************************************************************************************************

这是另外一种方法:(需要设置合适的主题)

                final Dialog dialog2 = new Dialog(LoginActivity.this, R.style.ActionSheetDialogStyle);
                LinearLayout view = (LinearLayout) LayoutInflater.from(LoginActivity.this).inflate(R.layout.dialog_forgotpwd, null);
                TextView dismiss = (TextView) view.findViewById(R.id.btn_dismiss);
                TextView forgotPin = (TextView) view.findViewById(R.id.btn_forgotpin);
                TextView forgotPassword = (TextView) view.findViewById(R.id.btn_forgotpassword);
                dismiss.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        dialog2.dismiss();
                    }
                });
                forgotPin.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                    }
                });
                forgotPassword.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {

                    }
                });

                dialog2.setContentView(view);
                Window dialogWindow = dialog2.getWindow();
                dialogWindow.setGravity(Gravity.BOTTOM);
                WindowManager.LayoutParams lp = dialogWindow.getAttributes();
                lp.y = 30; //距离底部的高度
                dialogWindow.setAttributes(lp);
                dialog2.show();

style.xml

<style name="ActionSheetDialogStyle" parent="@android:style/Theme.Dialog">
        <!-- 背景透明 -->
        <item name="android:windowBackground">@drawable/email_dialogfrag_bg</item>
        <item name="android:windowContentOverlay">@null</item>
        <!-- 浮于Activity之上 -->
        <item name="android:windowIsFloating">true</item>
        <!-- 边框 -->
        <item name="android:windowFrame">@null</item>
        <!-- Dialog以外的区域模糊效果 -->
        <item name="android:backgroundDimEnabled">true</item>
        <!-- 无标题 -->
        <item name="android:windowNoTitle">true</item>
        <!-- 半透明 -->
        <item name="android:windowIsTranslucent">true</item>
        <item name="android:color">@color/white</item>
    </style>
 
 
时间: 2024-10-01 08:55:29

android开发学习 ------- 弹出框的相关文章

Android 开发笔记 “弹出框”

AlertDialog.Builder builder = new AlertDialog.Builder(Activity.this); builder.setMessage("Are you sure you want to exit?") .setCancelable(false) .setPositiveButton("Yes", new DialogInterface.OnClickListener() { public void onClick(Dial

Android窗口为弹出框样式

1.XML android:theme="@android:style/Theme.Dialog <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.fish.helloworld" android:versio

android 三种弹出框之一poprpWindow

poprpWindow 在android的弹出框我目前了解到的是有三种:AlertDialog,poprpWindow,Activity伪弹框, AlertDialog太熟悉了,这里就不介绍了 就先看看poprpWindow API 给出的解释是: 意思就是一个展示view的弹出窗体,这个弹出窗体将会浮动在当前activity的最上层, 它和AlertDialog的区别是:在android中弹出框有两种方式:AlertDialog和PopupWindow,它们的不同点在于:      1.Ale

android service Dialog 弹出框

android service Dialog 弹出框 相信大家第一次在Service中实现 AlertDialog 弹出框时,都会遇到应用闪退然后报出这个异常: Caused by: android.view.WindowManager$BadTokenException: 下面说下为什么出现这个异常,原因很简单,是由于 AlertDialog 的显示是依赖于一个确定的Activity类,所以要想在 Service 中实现弹出来,需要做如下配置: 1.安装常规写好 AlertDialog 功能块

android 开发 制作弹出等待进度条

技术点: dialog:ProgressBar:animated-rotate: 弹出框: import com.carspeak.client.R; import android.app.Dialog; import android.content.Context; import android.graphics.drawable.AnimationDrawable; import android.view.Gravity; import android.widget.ImageView; i

Android 关于Dialog弹出框

直接上效果图: 实现步骤: 1.主界面activity_main.xml很简单,一个按钮 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_heig

windows phone 8.1开发:(消息弹出框)强大的ContentDialog

原文出自:http://www.bcmeng.com/contentdialog/ 在应用开发中我们必不可少的会使用到消息框,windows phone8中的messagebox在windows phone8.1中变成了MessageDialog.使用方法大体相差不大.不过MessageDialog的功能过于简单,许多时候无法满足我们的实际需要.在windows phone 8.1中出现了ContentDialog,ContentDialog不仅可以选择半屏或者全屏展示,里面的内容还可以像一个X

【Android】各式各样的弹出框与对菜单键、返回键的监听

Android自带各式各样的弹出框,弹出框也是安卓基本的组件之一.同时安卓程序可以对菜单键.返回键的监听,但在安卓4.0之后就禁止对Home键的屏蔽与监听,强制保留为系统守护按键,如果非要对Home键的屏蔽与监听,就会出现java.lang.IllegalArgumentException: Window type can not be changed after the window is added.的错误. 下面写一个小程序,来说明Android各式各样的弹出框,同时,安卓是如何对菜单键.

Android----消息弹出框

关于Android的知识,自从工作了就没有什么时间去总结学习过的知识,我个人比较喜欢学习后总结,今天就写一下关于android中消息弹出框的几种方式的简单示例,按照自己的思路写了一段,希望对和我一样在学习Android的各位同志们有所帮助,写的不好的还是希望各位技术大神多多指点,以后我会不段改进和学习与总结.欧克. 首先android中主要有8种消息对话框的方式. 1.AlertDialog.Builder(普通消息框) 1 AlertDialog.Builder ab=new AlertDia