-
Notifications
You must be signed in to change notification settings - Fork 1.2k
7. 也许你想要这些效果
Jun edited this page May 14, 2021
·
3 revisions
XPopup目前完全可以胜任项目中任何弹窗需求了,但是有些不常见的效果,Demo中没有演示,在这里做个补充说明。也许下面这些效果是你想要的。
默认情况下Drawer弹窗效果是高度充满的,但是也许你想要下面这样的效果:
要知道,弹窗的本质是一个View,所以可以通过设置marginTop来实现,只需在onCreate中这样设置即可:
//通过设置topMargin,可以让Drawer弹窗进行局部阴影展示
ViewGroup.MarginLayoutParams params = (MarginLayoutParams) getPopupContentView().getLayoutParams();
params.topMargin = 450;
这个topMargin的值需要你自己调整到合适的位置。
其实Demo中有,但贴个代码:
final BasePopupView popupView = new XPopup.Builder(this)
.atView(editText)
.isViewMode(true) //开启View实现
.isRequestFocus(false) //不强制焦点
.isClickThrough(true) //点击透传
.hasShadowBg(false)
.popupAnimation(PopupAnimation.ScaleAlphaFromCenter)
.asAttachList(new String[]{"联想到的内容 - 1", "联想到的内容 - 2", "联想到的内容 - 333"}, null, new OnSelectListener() {
@Override
public void onSelect(int position, String text) {
Toast.makeText(XPopupApp.context, text, Toast.LENGTH_LONG).show();
}
});
//监听输入的时候,显示弹窗
editText.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) { }
@Override
public void afterTextChanged(Editable s) {
if(s.toString().isEmpty()){
popupView.dismiss();
return;
}
if(popupView.isDismiss()){
popupView.show();
}
}
});
QQ Email: [email protected]
QQ: 16167479