7

我希望创建一个看起来像弹出窗口的活动

那是活动的透明背景,我希望在设备屏幕右上角的屏幕上的自定义位置显示它

我所做的是onCreate像活动一样在pop over里面

Display display = getWindow().getWindowManager().getDefaultDisplay();
    WindowManager.LayoutParams params = getWindow().getAttributes();
    // params.x = -20;
    params.height = (display.getHeight()) / 2;
    params.width = (display.getWidth()) / 2;
    // params.y = -10;
    params.gravity =  Gravity.RIGHT;
    getWindow().setAttributes(params); 

在主

 <activity android:name=".DialogAct"
           android:theme="@android:style/Theme.Holo.Light.NoActionBar"></activity>

这就是我的启动器活动的样子

在此处输入图像描述

因此,当我单击操作栏上的搜索时,我正在向我的新活动发送意图。我想让它看起来像在搜索图标下方弹出我得到的是 在此处输入图像描述

您可以看到单击了对先前活动的搜索并加载了新活动(蓝色部分)。如您所见,新活动移动到屏幕中心。但我希望它位于操作栏图标下方。

我试过了params.gravity = Gravity.TOP | Gravity.RIGHT;。然后我得到了这个

在此处输入图像描述

我想将它放在上一个活动的操作栏下方。我尝试了很多方法来实现它,但都失败了。所以任何人都可以提出一个方法

4

4 回答 4

0

在您的清单中,您写道

<activity android:name=".DialogAct"
           android:theme="@android:style/Theme.Holo.Light.NoActionBar">

你应该删除这NoActionBar部分

<activity android:name=".DialogAct"
           android:theme="@android:style/Theme.Holo.Light">
于 2013-07-24T12:49:34.327 回答
0

我能想到两件事可能会有所帮助。首先,您可以尝试更改Theme您的manifestto android:theme="@android:style/Theme.Dialog,这应该会给您想要的外观。

编辑

您可以使用隐藏标题栏

this.requestWindowFeature(Window.FEATURE_NO_TITLE);

只要确保在调用之前调用它setContentView()

此外,如果它不需要单独Activity,您可以使用PopupWindow。有了这个,您可以使用isAboveAnchor并将其ActionBar用作锚并将其放置在下方或使用其他相关方法之一。我不知道这些是否能满足您的需求,但它们可能对您有用。

于 2013-07-24T12:50:52.323 回答
0

@edwin你可以做的是在制作之后

params.gravity = Gravity.TOP | Gravity.RIGHT;

您只需从顶部提供一些边距,如下所示:

  LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
  params.setMargins(left, top, right, bottom);
  yourCustomPopOveractivity.setLayoutParams(params);

而且我认为这样做之后,您可以获得所需的位置,并且您所做的一切都是正确的。

请尝试然后告诉我

于 2013-10-23T05:23:15.627 回答
-1

尝试重力居中而不是右上角..

于 2013-07-24T12:53:46.847 回答