0

PopupWindow当用户单击操作栏上的按钮(使用 ABS)时,我使用 a来显示一些数据。我还使用翻译动画来显示和隐藏它,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 回答