public class MainActivity extends Activity {
private Button btn;
private PopupWindow window;
private EditText edit_text;
private Button btn1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.btn);
View view = View.inflate(MainActivity.this, R.layout.activity_main, null);
//窗口布局转换成视图对象
View contentView = View.inflate(MainActivity.this, R.layout.pop_layout, null);
/**
* contentView :popup布局转换成的视图对象
* width:窗口显示的宽度
* height:窗口显示的高度
*/
window = new PopupWindow(contentView, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
//如果想要设置点击外部窗口消失,,必须2个方法同时使用
window.setBackgroundDrawable(new BitmapDrawable());//给窗口设置一个完全透明的背景图片//new ColorDrawable(0xc0c0c0c0)
window.setOutsideTouchable(true);//设置窗口外部可以触摸
//窗口里面的控件没有响应解决方案
window.setFocusable(true);//设置窗口的焦点事件
window.setTouchable(true);//设置窗口本身可以触摸
//通过视图对象操控里面的控件
edit_text = (EditText) contentView.findViewById(R.id.edit_text);
btn1 = (Button) contentView.findViewById(R.id.btn1);
btn1.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);
}
}
PopupWindow基础实现
最新推荐文章于 2022-03-03 14:07:28 发布