如何在其父布局之上绘制视图?

时间:2016-11-12 14:42:00

标签: java android layout view

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

这很好用,但是当我将组件放在LinearLayout中时,组件下面的视图会被移动,为下拉菜单腾出空间。

我希望下拉列表覆盖包含布局中的任何其他视图。我怎么能这样做?

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

现在,我知道这可以通过使用FrameLayout作为父布局来实现,但我希望该组件可用,而不管使用什么父布局。

1 个答案:

答案 0 :(得分:0)

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

a = load('data.txt')

然后在FrameLayout layout = (FrameLayout) ((Activity) context).getWindow().getDecorView().findViewById(android.R.id.content); 中,我将其发送到布局堆栈的顶部。

OnLayoutChange()

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

@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();
}

然后将其添加到视图中。

希望这有助于某人!