2016-11-12 7 views
1

私は基本的に、カスタムドロップダウンメニューを下に付けたEditTextであるカスタムコンポーネントを書いています。これにより、検索候補のリストがホストされます。今はEditTextと私のSuggestionBox-Viewを使ってLinearLayoutを拡張することでこれを実現します。すなわち、私はこれが正常に動作しますが、私はのLinearLayout内のコンポーネントを入れたときに、私のコンポーネントの下のビューは、ドロップダウンメニューの余地を作るために移動されthis.addView(searchEditText);this.addView(suggestionBox);親ビューの上にビューを描画するにはどうすればよいですか?

を使用しています。

レイアウトを含む他のビューの上にドロップダウンを重ねたいとします。これどうやってするの?

たとえば、コンポーネントが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); 

これをビューに追加してください。

これが誰かを助けることを願っています!

関連する問題