所以我正在编写一个自定义组件,它基本上是一个EditText,底部附有一个自定义下拉菜单。这将托管搜索建议列表。现在我通过使用EditText和我的SuggestionBox-View扩展LinearLayout来实现这一目标。我用this.addView(searchEditText);
和
this.addView(suggestionBox);
这很好用,但是当我将组件放在LinearLayout中时,组件下面的视图会被移动,为下拉菜单腾出空间。
我希望下拉列表覆盖包含布局中的任何其他视图。我怎么能这样做?
例如,如果组件在LinearLayout中使用,其下方有视图,我希望下拉列表覆盖其他视图。
现在,我知道这可以通过使用FrameLayout作为父布局来实现,但我希望该组件可用,而不管使用什么父布局。
答案 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();
}
然后将其添加到视图中。
希望这有助于某人!