0

PopupWindowユーザーがアクションバーのボタンをクリックしたときに (ABS を使用して) データを表示するために を使用しています。また、翻訳アニメーションを使用して表示と非表示を切り替えているPopupWindowため、上からドロップダウンします。

私が望む動作は、アクションバーが常にアクティビティ内の他のすべてのものの上に(前面に移動するように)残ることです。しかしPopupWindow、アニメーションを表示すると、移動中に移動してアクションバーに重なって表示されます。に別の高さを設定するPopupWindowと、アクション バーにも重なってしまいます。

ActionBarSherlock を使用して、ポップアップやダイアログを含む他のすべての上に常にアクション バーを表示する方法はありますか? PopupWindowまたは、ルート内の基礎となるフラグメントにアタッチする方法はありFrameLayoutますか?

4

1 に答える 1

2

階層ビューアでビューを見てください。ここでの階層は、ABSがどこにあるかを含めて、ビューおよびビューグループのレイヤーのz-indexとして機能します。アクションバーの下にあるレイヤーを取得して、それにカスタムビューを追加できます。

    // Grab android.R.id.content's parent to encompass the actionbar & user content
    content = ((ViewGroup) findViewById(android.R.id.content).getParent());

    // Make sure we inflate our menu resource before it is used
    if (dialog == null)
        dialog = (ViewGroup) <INFLATE SOME DIALOG/VIEWGROUP HERE>;

    // We need this to add a view beneath the action bar
    FrameLayout parent = (FrameLayout) content.getParent();
    // There needs to be some layout params set for visibility
    FrameLayout.LayoutParams layoutParams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT, Gravity.TOP);
    // A little tricky... using negative margins can do an initial translation that hides a view
    layoutParams.setMargins(0, -(heightOfDialog), 0, 0);
    dialog.setLayoutParams(layoutParams);
    parent.addView(dialog, 0);

これにより、ダイアログの下にビューを配置しながら、TranslateAnimationのようなクラスを使用して希望どおりにビューをアニメーション化できるようになります。

TranslateAnimation animation = new TranslateAnimation(leftOfContent, 0, 0, 0);
animation.setDuration(TIME_TO_AUTO_SCROLL);
dialog.startAnimation(animation);
于 2013-03-05T05:28:46.777 に答える