gpt4 book ai didi

java - 如何在其父布局之上绘制 View ?

转载 作者:太空宇宙 更新时间:2023-11-04 12:04:21 25 4
gpt4 key购买 nike

所以我正在编写一个自定义组件,它基本上是一个 EditText,底部附有一个自定义下拉菜单。这将包含搜索建议列表。现在,我通过使用 EditText 和内部的 SuggestionBox-View 扩展 LinearLayout 来实现此目的。即我使用 this.addView(searchEditText);this.addView(suggestionBox);

这工作正常,但是当我将组件放入 LinearLayout 中时,组件下面的 View 会移动,为下拉菜单腾出空间。

我希望下拉列表覆盖包含布局中的任何其他 View 。我怎样才能做到这一点?

例如,如果该组件在 LinearLayout 中使用,并且其下方有 View ,我希望下拉列表覆盖其他 View 。

现在,我知道这可以通过使用 FrameLayout 作为父布局来完成,但我希望无论使用什么父布局,该组件都可用。

最佳答案

好吧,我应该发布这个问题的答案,以防有人偶然发现这个问题。我设法通过一些丑陋的修复来解决它。我使用下面的行找到主要内容 View ,然后将我的自定义 View 直接添加到其中。

FrameLayout layout = (FrameLayout) ((Activity) context).getWindow().getDecorView().findViewById(android.R.id.content);

然后在 OnLayoutChange() 中我将其发送到布局堆栈的顶部。

@Override
protected void onLayout(boolean changed, int l, int t, int r, int b) {
super.onLayout(changed, l, t, r, b);
listParams.setMargins(getLeft(),getTop()+getHeight(),getRight(),getBottom());
list.setLayoutParams(listParams);
list.bringToFront();
}

然而,还有另一种方法(可能更好)来做到这一点。那是通过使用类 PopupWindow 类。我还没有完全尝试过,但应该使用这样的东西:

PopupWindow window = new PopupWindow();
window.setContentView(customView);

然后将其添加到 View 中。

希望这对某人有帮助!

关于java - 如何在其父布局之上绘制 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40563958/

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