/**
* 创建,并显示popupwindow:显示出来的高度和宽度,,,取决于创建对象时候设置的宽度和高度
*/
public class MainActivity extends Activity {
private PopupWindow window;
private Button btns;
private View view;
private EditText edit_text;
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//把整个布局作为一个父控件,,,,转换成视图对象
view = View.inflate(MainActivity.this, R.layout.activity_main, null);
btns = (Button) findViewById(R.id.btns);
// 创建一个popupwindow的对象
/**
* contentView :popup布局转换成的视图对象
* width:窗口显示的宽度
* height:窗口显示的高度
*/
View contentView = View.inflate(MainActivity.this, R.layout.pop_layout,null);
window = new PopupWindow(contentView, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
//思考:点击外部不消失
/*
* new BitmapDrawable():就是一个透明的背景
*/
//如果想要设置点击外部窗口消失,,必须2个方法同时使用
window.setBackgroundDrawable(new BitmapDrawable());//给窗口设置一个完全透明的背景图片
window.setOutsideTouchable(true);//设置窗口外部可以触摸
//思考:窗口里面的控件没有响应
//使用一个setFocusable 就可以实现,,,但是一般这2个方法也会同时使用
window.setFocusable(true);//设置窗口的焦点事件
window.setTouchable(true);//设置窗口本身可以触摸
//如果想要使用窗口内部的控件,,,必须通过他的视图对象去找
edit_text = (EditText) contentView.findViewById(R.id.edit_text);
btn = (Button) contentView.findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this, edit_text.getText().toString(), 0).show();
//一般执行完逻辑操作以后,,,窗口消失
window.dismiss();
}
});
}
// 显示窗口
public void show_window(View view) {
//进行显示
//window.showAsDropDown(btns);//显示在某控件的正左下方
//window.showAsDropDown(btns, -150, 200);//显示在某控件的左下方(带偏移量)
/**
* parent:父控件--->popupwindow相对于某个父控件的位置
* gravity:重力方向
* x:x轴的偏移量
* y:y轴的偏移量
*/
window.showAtLocation(view, Gravity.BOTTOM, 0, 0);
}
}
Android 之 PopupWindow 框
最新推荐文章于 2020-12-29 08:23:22 发布