Java 如何在它上面绘制视图´;什么是父布局?
因此,我正在编写一个自定义组件,它基本上是一个EditText,底部附有一个自定义下拉菜单。这将承载一个搜索建议列表。现在,我通过扩展一个带有EditText和我的SuggestionBox视图的LinearLayout来实现这一点。即我使用Java 如何在它上面绘制视图´;什么是父布局?,java,android,layout,view,Java,Android,Layout,View,因此,我正在编写一个自定义组件,它基本上是一个EditText,底部附有一个自定义下拉菜单。这将承载一个搜索建议列表。现在,我通过扩展一个带有EditText和我的SuggestionBox视图的LinearLayout来实现这一点。即我使用this.addView(searchEditText) 和 this.addView(suggestionBox) 这很好,但是当我将组件放在线性布局中时,组件下面的视图会被移动,以便为下拉菜单腾出空间 我希望下拉列表覆盖包含布局中的任何其他视图。我该怎么
this.addView(searchEditText)代码>
和
this.addView(suggestionBox)代码>
这很好,但是当我将组件放在线性布局中时,组件下面的视图会被移动,以便为下拉菜单腾出空间
我希望下拉列表覆盖包含布局中的任何其他视图。我该怎么做
例如,如果零部件在线性布局中使用,且其下方有视图,则我希望下拉列表覆盖其他视图
现在,我知道这可以通过使用FrameLayout作为父布局来实现,但我希望无论使用的是什么父布局,组件都是可用的。好的,所以我可能应该发布这个问题的答案,以防有人偶然发现这个问题。我设法解决了它与一个丑陋的修复位。我用下面的行找到主内容视图,然后直接将自定义视图添加到其中
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);
然后将其添加到视图中
希望这对别人有帮助 好的,所以我可能应该发布这个问题的答案,以防有人偶然发现这个问题。我设法解决了它与一个丑陋的修复位。我用下面的行找到主内容视图,然后直接将自定义视图添加到其中
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);
然后将其添加到视图中
希望这对别人有帮助 对于类似图层的视图或图层,应使用相对布局drawable@Divyesh你能再详细解释一下吗?谢谢。你想使用邮件图标上显示的未读邮件数吗?@Divyesh不,这根本不是问题。我想创建一个视图以覆盖视图组中的其他视图。我对此不太了解。对于类似图层的视图或图层,应该使用相对布局drawable@Divyesh你能再详细解释一下吗?谢谢。你想使用邮件图标上显示的未读邮件数吗?@Divyesh不,这根本不是问题。我想创建一个视图以覆盖视图组中的其他视图。对此我知道得不多。