1.PopupWindow:Android中的弹出窗口
如何创建一个窗口?
(1):contentView = View.inflate();
(2):宽度和高度都是通过 LayoutParams.MATCH_PARENT
new PopupWindow(contentView,width, height);
如何显示一个窗口?
window.showAsDropDown(btn_show);//在指定控件的正左下方显示
window.showAsDropDown(btn_show, 40, 30);//指定控件的正左下方显示,带有偏移量
window.showAtLocation(parent, Gravity.BOTTOM, 0, 0);//显示在相对于父窗体的位置
创建窗口的必要属性?
/*
* contentView:pop窗口的视图对象
* width:窗口显示出来的宽度
* height:窗口显示出来的高度
*/
解决的问题:
(1):内部的控件不可操作
window.setFocusable(true);//设置焦点事件
window.setTouchable(true);//设置窗口可以触摸
(2):点击窗口外部,窗口不消失
window.setOutsideTouchable(true);//设置窗口外部可以触摸
window.setBackgroundDrawable(new BitmapDrawable());//设置透明的背景图片
如何关闭对话框:
PopupWindow.dismiss();
2.AlertDialog:Anddroid的对话框
1.Android自带有几种对话框?
(1):文本对话框
(2):列表对话框
(3):单选对话框
(4):多选对话框
(5):自定义对话框
2.常用的对话框
文本对话框 ★
3.如何实现一个对话框
//1.通过AlertDialog的构造器来创建对话框
Builder b = new AlertDialog.Builder();
//2.设置对话框的内容
...
...
...
//3.必须调用 .show();才可以展示
Pop 和 Dialog的区别
Pop不完全覆盖屏幕
Dialog是完全覆盖屏幕
Pop阻塞式窗口:一旦窗口运行出来,后台的其他程序处于等待状态
Dialog非阻塞式窗口:一旦窗口运行出来,后台的其他程序仍然处于运行状态
alerDiaLog弹窗
//设置弹出全屏
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.Dialog_Fullscreen);
//自定义diaLog
final AlertDialog alertDialog = builder.create();
//创建布局
//可以用setView()来添加布局弹出 1.
View view = View.inflate(ZiLiaoActivity.this, R.layout.alert_nickname, null);
final EditText editText = (EditText) view.findViewById(R.id.edit_text);
alertDialog.setView(view);
alertDialog.show();
//也可以用setContentViewt添加布局弹出 2.
//alertDialog.setContentView(R.layout.alert_nickname);
在style中加上就可以了
<!--alertDialog-->
<style name="Dialog_Fullscreen">
<item name="android:windowFullscreen">true</item>
<item name="android:windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="android:windowCloseOnTouchOutside">true</item>
</style>
popWindow弹窗
//创建popWindow对象
private void createPop() {
View parent = View.inflate(this, R.layout.activity_zi_liao, null);
View view = View.inflate(this,R.layout.pop_layout, null);
PopupWindow popupWindow = new PopupWindow(view, ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
popupWindow.setTouchable(true);//设置窗口触摸
popupWindow.setFocusable(true);//设置窗口获取焦点
popupWindow.setOutsideTouchable(true);//设置窗口外部可触摸 要结合setBackgroundDrawable来使用
popupWindow.setBackgroundDrawable(new BitmapDrawable());
**//设置沉浸式状态栏
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0 全透明实现
Window window = getWindow();
window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
window.setStatusBarColor(Color.TRANSPARENT);
} else {//4.4 全透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
}
popupWindow.setClippingEnabled(false);**
popupWindow.showAtLocation(parent, Gravity.BOTTOM,0,0);//相对于父窗体底部
}