浅谈android之popupWindow用法

临睡觉前写个小demo学习下。

popupwindow也属于android对话框的一种,它的位置什么的是可以改变的。

首先新建工程。。。自定义一个布局(供对话框使用)

上代码:

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Button btn=(Button) findViewById(R.id.button1);
		btn.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				popView(v);// 显示弹出窗口
			}
		});
	
	}

	private void popView(View v) {
		//初始化弹窗里面的布局视图
		View view = View.inflate(this, R.layout.poupup, null);
		//实例化一个弹窗对象
		PopupWindow popup = new PopupWindow(view, LayoutParams.WRAP_CONTENT,
				LayoutParams.WRAP_CONTENT, true);
		//设置弹窗背景图片
		popup.setBackgroundDrawable(getResources().getDrawable(
				R.drawable.ic_launcher));
		//显示弹窗,位置在这个按钮的下方x,y各偏移100地方
		popup.showAsDropDown(v, 100, 100);

	}
}

好了,运行成功。

告诉大家中途遇到的问题,popupwindow是依赖于父窗口显示的,要是直接在oncreate方法里面调用showAsDropDown就会出错哦。

Android Studio 中,可以使用 PopupWindow 来实现弹出框效果,具体使用方法如下: 1. 创建 PopupWindow 对象 ```java PopupWindow popupWindow = new PopupWindow(context); ``` 2. 设置 PopupWindow 的内容布局 ```java View contentView = LayoutInflater.from(context).inflate(R.layout.popup_layout, null); popupWindow.setContentView(contentView); ``` 其中,`R.layout.popup_layout` 是自定义的弹出框布局文件,可以根据实际需求进行修改。 3. 设置 PopupWindow 的宽度和高度 ```java popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); ``` 4. 设置 PopupWindow 的背景颜色和动画效果 ```java popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); popupWindow.setAnimationStyle(R.style.popup_anim); ``` 其中,`R.style.popup_anim` 是自定义的动画样式文件。 5. 显示 PopupWindow ```java popupWindow.showAtLocation(parentView, Gravity.CENTER, 0, 0); ``` 其中,`parentView` 是 PopupWindow 的父控件,可以是任意 View 对象;`Gravity.CENTER` 表示 PopupWindow 在父控件中的位置,可以根据实际需求进行修改;最后两个参数是 PopupWindow 在屏幕中的偏移量。 完整的示例代码如下: ```java PopupWindow popupWindow = new PopupWindow(context); View contentView = LayoutInflater.from(context).inflate(R.layout.popup_layout, null); popupWindow.setContentView(contentView); popupWindow.setWidth(ViewGroup.LayoutParams.WRAP_CONTENT); popupWindow.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); popupWindow.setAnimationStyle(R.style.popup_anim); popupWindow.showAtLocation(parentView, Gravity.CENTER, 0, 0); ``` 需要注意的是,PopupWindow 的显示和隐藏可以使用 `popupWindow.showAtLocation()` 和 `popupWindow.dismiss()` 方法来实现。同时,PopupWindow 也支持点击外部区域隐藏的功能,可以使用 `popupWindow.setOutsideTouchable(true)` 方法开启。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值