Android 如何从意图调用创建自定义PopupWindow?

Android 如何从意图调用创建自定义PopupWindow?,android,android-intent,popupwindow,Android,Android Intent,Popupwindow,我想创建一个类似以下内容的自定义弹出窗口: 在本例中,PopupWindow是通过活动中的按钮单击事件创建的,但我想通过另一个应用程序中的intent创建PopupWindow。 可能吗?如有任何意见,将不胜感激 你的要求不是很清楚。意图通常在您希望切换到其他活动或可能将意图发送到某种服务时使用。如果您想为某个操作打开一个对话框,您实际上不需要意图。使用您的自定义设计创建一个活动,同时在清单文件中注册该活动,只需添加此android:theme=“@android:style/theme.di

我想创建一个类似以下内容的自定义弹出窗口:

在本例中,PopupWindow是通过活动中的按钮单击事件创建的,但我想通过另一个应用程序中的intent创建PopupWindow。
可能吗?如有任何意见,将不胜感激

你的要求不是很清楚。意图通常在您希望切换到其他活动或可能将意图发送到某种服务时使用。如果您想为某个操作打开一个对话框,您实际上不需要意图。

使用您的自定义设计创建一个活动,同时在清单文件中注册该活动,只需添加此
android:theme=“@android:style/theme.dialog”

并根据您的意图调用该活动。希望你能拿到。:)

其思想是声明一个标准活动,使其看起来像某种弹出窗口

使用此代码(标准锅炉板
意图
代码触发
活动

例如,如果您将弹出式
活动
命名为弹出式,则将
弹出式活动类
替换为
弹出式.class

现在,对于这个活动,在清单中声明一个
主题
。例如:

这是相应的样式声明:

<style name="DialogNoTitleBar" parent="android:style/Theme.Dialog">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>

谢谢你的评论,安迪!我目前正在制作一个独立的库,可以从其他应用程序中使用。在我的库中,我有几个组件,希望通过popupWindow而不是对话框来显示这些组件。所以我的场景是这样的。在应用程序端,他们可以向我的库发送一个意图,在我的库中,一个活动将获得这个意图,并根据意图消息显示PopupWindow。我只想展示PopupWindow,而不是活动,这有意义吗?好的。在这种情况下,我想IceMan的答案基本上是正确的。请参考此链接,它可能会对您有所帮助….[link1][1],并查看此….[link2][2][1]:[2]:谢谢您,Jashan!我试过你的建议,它看起来和我期望的很相似。但我还有一个问题。是否可以更改其弹出位置或在其上添加一些动画效果?我还想在不关闭弹出窗口的情况下与基本活动进行交互!:)是的,我认为这是可能的。只要看看这个博客,这个问题可能会对你有所帮助。谢谢,冰人!!我将这个定制主题应用到我的活动中,但仍然无法得到我想要的。我想我应该使用“弹出窗口”,因为我的弹出窗口应该在焦点切换到其他活动或视图时出现。顺便说一句,我从你的评论中得到了很多启示!谢谢大家!@NariKim:我发布的解决方案不是你想要的样子。当然,我的代码将与您的要求不同。我提供的是一个指针,告诉你如何去实现你所需要的。当然,请记住,您必须进行自己的定制。我还想与基本活动进行交互,而无需关闭弹出窗口!无论您选择使用哪种方法/解决方案,这都是不可能的。您可以像平常一样在
意图中传递额外信息,但除此之外,
弹出窗口
或类似我的解决方案将永远失去焦点。谢谢您的评论。我认为我最初的问题有点模棱两可。我在@AndyFaizan的回答中留下了更多的描述,我找到了解决方案。通过使用
服务
我可以在没有UI(或活动)的情况下获得意图,并且根据这一点,我可以保持对弹出窗口的关注,而不会出现不满意的情况。@NariKim:我想你误解了我的评论。这是你在Jashan的帖子中评论的一部分:我还想在没有弹出窗口的情况下与基本活动进行交互。这就是我所说的不可能的关键,也将失去重点:与基础活动相互作用。不用说,弹出窗口将自然获得焦点,因为它现在在屏幕上处于活动状态。
<style name="DialogNoTitleBar" parent="android:style/Theme.Dialog">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>
getWindow().setLayout(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);