gpt4 book ai didi

android - 嵌入对话框中的弹出窗口能否扩展(以可裁剪的方式)到设备窗口边框?

转载 作者:行者123 更新时间:2023-11-29 00:25:36 28 4
gpt4 key购买 nike

我在对话框 Activity 中有一个附加到“按钮”(好吧,实际上是 TextView)的弹出窗口:

AndroidManifest.xml

<activity android:name="com.MyActivity"
android:theme="@android:style/Theme.Dialog"/>

我的 Activity 布局.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="290dp"
android:layout_height="200dp"
android:orientation="vertical" >

etc...

</LinearLayout>

我的 Activity :

PopupWindow popupWindow = new PopupWindow(this);
popupWindow.setWidth(250);
popupWindow.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);

TextView dropDownView = findViewById(R.id.dropDownView);

最后在 dropDownView onClickListener() 中:

popupWindow.showAsDropDown(v, -5, 0);  //where v=dropDownView

它很好地在我的 TextView 下方显示了一个下拉框。但是,弹出窗口被裁剪到对话框的边界(即,弹出窗口的下边界在对话框的边缘结束,并且启用了滚动)。我可以设置以下内容:

popupWindow.setClippingEnabled(false);

这确实允许下拉列表扩展到对话框之外,但不幸的是也扩展到窗口之外。有没有办法允许弹出窗口扩展到对话框之外但受窗口限制(从而在弹出窗口大于窗口时提供滚动)?

最佳答案

好吧,我终于找到了解决这个问题的方法:

int[] location = new int[2];
view.getLocationOnScreen(location); //get physical location in Px
DisplayMetrics displaymetrics = new DisplayMetrics();
activity.getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int screenHeightPx = displaymetrics.heightPixels;
int maxHeight = screenHeightPx - location[1] - view.getHeight() - 20;

PopupWindow popupWindow = new PopupWindow(this);
....
popupWindow.setHeight(maxHeight);
popupWindow.setClippingEnabled(false);

这里的关键是找到弹出窗口的 anchor View 在屏幕上的位置。从屏幕的最大高度减去它的 y 坐标,得到从 View 左上角到屏幕底部的距离。从这里我拿走了 anchor View 的高度(以获得底部边缘的 y 坐标),最后还有 20 个用于填充(可能应该先将其转换为 DP)。

关于android - 嵌入对话框中的弹出窗口能否扩展(以可裁剪的方式)到设备窗口边框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19824770/

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