2016-11-12 27 views
1

所以我正在写一个自定义组件,它基本上是一个EditText,并在底部附加了一个自定义下拉菜单。这将包含搜索建议的列表。现在我通过用一个EditText和我的SuggestionBox-View内部扩展LinearLayout来实现这一点。即我用this.addView(searchEditText);this.addView(suggestionBox);如何在父级布局上绘制视图?

这工作得很好,但是当我把分量的LinearLayout里面,我的组件下面的观点被移到腾出空间下拉菜单。

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

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

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

+0

你应该使用相对布局的图层,如视图或图层可绘制 –

+0

@Divyesh你能给一点更详细的解释吗?谢谢。 – gustavaa

+0

你想使用消息图标上显示的未读消息数,rigt? –

回答

0

好的,所以我可能应该发布这个问题的答案,以防有人绊倒这个问题。我设法解决它与一个丑陋的修复。我用下面的代码找到主要的内容视图,然后直接将我的自定义视图添加到它。

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); 

然后将其添加到视图中。

希望这可以帮助别人!

相关问题