写一个自定义BasePopWindow类 可以引入不同布局
时间: 2023-12-14 15:40:22 浏览: 76
自定义PopWindow
以下是一个简单的自定义BasePopWindow类的示例,可以引入不同的布局:
```java
public class BasePopWindow extends PopupWindow {
private View contentView;
public BasePopWindow(Context context, int layoutId) {
super(context);
contentView = LayoutInflater.from(context).inflate(layoutId, null);
setContentView(contentView);
setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);
setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
setFocusable(true);
setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
setOutsideTouchable(true);
}
public View getContentView() {
return contentView;
}
}
```
使用时,可以继承BasePopWindow类,重写构造方法,传入不同的布局资源id:
```java
public class CustomPopWindow extends BasePopWindow {
public CustomPopWindow(Context context) {
super(context, R.layout.custom_pop_layout);
}
// 可以在这里对布局中的控件进行操作
public void setText(String text) {
TextView textView = getContentView().findViewById(R.id.tv_text);
textView.setText(text);
}
}
```
然后在需要弹出PopWindow的地方,创建CustomPopWindow的实例,并设置相应的点击事件等:
```java
CustomPopWindow customPopWindow = new CustomPopWindow(this);
customPopWindow.showAsDropDown(view);
customPopWindow.setText("Hello World");
```
阅读全文