底部弹出alertDialog,宽度匹配屏幕宽
来源:互联网 发布:长整型数java 编辑:程序博客网 时间:2024/04/28 22:16
使用Dialog作为弹框来和用户交互,从底部弹出固定在底部时,让弹出框宽度匹配屏幕宽度,使用Dialog,AlertDialog都可以实现,下面分别贴出两种方法的实现代码,先上一个效果图,如果需要宽度匹配屏幕宽度,个人建议使用Dialog.
方法一、Dialog
package com.cool.hello.alertDialog;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.util.DisplayMetrics;import android.view.Gravity;import android.view.View;import android.view.Window;import android.view.WindowManager;import com.cool.hello.R;public class DialogActivity extends AppCompatActivity { private Dialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_alert_dialog); initAlertDialog(); } private void initAlertDialog() { if(dialog == null) { dialog = new Dialog(this, R.style.dialog);// dialog.setCancelable(false); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.layout_dialog); Window window = dialog.getWindow(); window.setGravity(Gravity.BOTTOM); window.setWindowAnimations(R.style.AnimDialog); WindowManager manager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm = new DisplayMetrics(); manager.getDefaultDisplay().getMetrics(dm); WindowManager.LayoutParams lp = window.getAttributes(); lp.width = dm.widthPixels; window.setAttributes(lp); } } public void show(View view) { dialog.show(); }}主题
R.style.dialog
<style name="dialog" parent="android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowNoTitle">true</item> <item name="android:windowIsFloating">true</item> <item name="android:windowContentOverlay">@null</item> <item name="android:windowBackground">@color/background</item> </style>
动画资源
R.style.AnimDialog<style name="AnimDialog"> <item name="android:windowEnterAnimation">@anim/dialog_enter</item> <item name="android:windowExitAnimation">@anim/dialog_exit</item> </style>
dialog_enter.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator"> <translate android:duration="@android:integer/config_shortAnimTime" android:fromYDelta="100%p" android:toYDelta="0" /> <alpha android:duration="@android:integer/config_shortAnimTime" android:fromAlpha="0.0" android:toAlpha="1.0" /></set>
dialog_exit.xml
<?xml version="1.0" encoding="UTF-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/decelerate_interpolator"> <translate android:duration="@android:integer/config_shortAnimTime" android:fromYDelta="0" android:toYDelta="100%p" /> <alpha android:duration="@android:integer/config_shortAnimTime" android:fromAlpha="1.0" android:toAlpha="0.0" /></set>
方式二、AlertDialog
初始化
protected AlertDialog companyDialog; private void initAlertDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyAlertDialog); View itemView = LayoutInflater.from(this).inflate(R.layout.layout_comany_list, null); mCompanyRecyclerView = (LRecyclerView) itemView.findViewById(R.id.rv_company); builder.setView(itemView); companyDialog = builder.create(); }
显示
protected void showAlertDialog() { companyDialog.show(); Window window = companyDialog.getWindow(); WindowManager.LayoutParams params = window.getAttributes(); window.setGravity(Gravity.BOTTOM); params.width = window.getWindowManager().getDefaultDisplay().getWidth(); window.setWindowAnimations(R.style.AnimDialog); window.setAttributes(params); }
主题
R.style.MyAlertDialog<style name="MyAlertDialog" parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="android:windowFrame">@null</item><!--移除边框--> <item name="android:windowNoTitle">true</item><!--去除顶部标题栏--> <item name="android:windowIsTranslucent">true</item><!--窗体透明--> <item name="android:background">@android:color/white</item><!--背景透明--> <item name="android:windowBackground">@android:color/transparent</item><!--窗体背景透明--> <item name="android:windowIsFloating">true</item><!--窗体是否浮动--> <item name="android:backgroundDimEnabled">true</item><!--背景是否昏暗--> <item name="android:backgroundDimAmount">0.6</item><!--昏暗数量--> <item name="android:layout_marginLeft">-10dp</item> <item name="android:layout_marginRight">-10dp</item> <item name="android:layout_marginBottom">-3dp</item> </style>
动画资源同上
1 0
- 底部弹出alertDialog,宽度匹配屏幕宽
- 从底部弹出充满屏幕宽度的diaolog
- Android实践-自定义dialog从屏幕底部弹出并且充满屏幕宽度
- Android自定义dialog从屏幕底部弹出并且充满屏幕宽度
- Android实践-自定义dialog从屏幕底部弹出并且充满屏幕宽度
- Android自定义dialog从屏幕底部弹出并且充满屏幕宽度
- android 5.0以上版本自定义dialog从屏幕底部弹出并且充满屏幕宽度
- android AlertDialog用作底部弹出菜单
- AlertDialog 底部弹出去掉边距
- AlertDialog弹窗在屏幕底部
- 从屏幕底部弹出PopupWindow
- ios屏幕底部弹出提示
- 从屏幕底部弹出PopupWindow
- PopupWindow实现屏幕底部弹出
- android 设置AlertDialog样式,宽度为屏幕宽度
- AlertDialog弹出对话框点击屏幕退出
- Android屏幕底部弹出DialogFragment(3)
- Android从屏幕底部弹出popupWindow
- Git常用命令总结
- Android XSnow框架详解(RxJava+Retrofit)
- J2EE——JSP
- 不高兴的津津
- maven发布到私服
- 底部弹出alertDialog,宽度匹配屏幕宽
- Scala学习整理[第三十一章 连接符解析]<Programming In Scala>
- STM32学习笔记(一)----基本位操作
- AI
- BootStrap栅格布局
- sql游标学习
- 跨域上传文件
- 7.5.2
- 超多Android资源站整理 值得一看