gpt4 book ai didi

android - 如何始终在按钮( View )上方显示 PopupWindow?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:38:53 26 4
gpt4 key购买 nike

设计要求是,有一个 ListView ,在 ListView 的项目中,有一个按钮,按下按钮,然后,总是在按钮上方而不是底部显示一个弹出窗口。

在 Android 中,使用“showAsDropDown”,弹出窗口默认显示在按钮( View 或 anchor )的底部。但是如果底部不够显示,弹出窗口将显示在按钮( View 或 anchor )的顶部。

onTop = (displayFrame.bottom - mScreenLocation[1] - anchor.getHeight() - yoff) <(mScreenLocation[1] - yoff - displayFrame.top);

所以,我根据这一点,通过“setSelectionFromTop”来移动按钮的item,让判断是否足够显示在按钮底部来达到效果。

在android 4.0.3中,可以,项目移动,弹出窗口显示新位置及以上,但,在android 2.2中,弹出窗口仍然显示按下的位置,而不是移动后的位置。

boolean onTop = (displayFrame.bottom - mScreenLocation[1] - v.getHeight() - 0) < (mScreenLocation[1] - 0 - displayFrame.top);
if(!onTop){
mListMain.setSelectionFromTop(mListMain.getPositionForView(v),(displayFrame.bottom - v.getHeight() + displayFrame.top) / 2 );
}

可以帮帮我,怎么解决?!..T_T

最佳答案

可能情况不一样,但我的解决办法是:

public class BaloonView extends PopupWindow {   
public BaloonView(Context context, View content) {
super(context);
setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
setTouchable(true);
setFocusable(true);
setOutsideTouchable(true);
setTouchInterceptor(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
BaloonView.this.dismiss();
return true;
}
return false;
}
});
}

public void showUnderView(View view, View content) {
setBackgroundDrawable(view.getContext().getResources().getDrawable(R.drawable.popup_inline_error_holo_dark));
FrameLayout container = new FrameLayout(view.getContext());
container.addView(content);
setContentView(container);
int[] location = new int[2];
view.getLocationOnScreen(location);
container.measure(MeasureSpec.UNSPECIFIED, MeasureSpec.UNSPECIFIED);
int xoffset = view.getWidth() / 2 - container.getMeasuredWidth() / 2;
showAsDropDown(view, xoffset, 0);
}
}

关于android - 如何始终在按钮( View )上方显示 PopupWindow?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10061757/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com