创建类似于Facebook Android应用程序的弹出对话框

4

Dinesh,我认为你可以为此创建一个QuickAction对话框。 - ρяσѕρєя K
2
请查看此Android中的QuickAction对话框 - ρяσѕρєя K
2个回答

2
有多种策略可以解决这个问题,但每个解决方案都必须处理对话框顶部三角形/指针的位置,因为它必须定位以指示用户的选择。
我认为解决此问题最简单的方法是:
  1. 启动具有透明主题的活动。 因此,在清单中将类似android:theme =“@ android:style / Theme.Translucent.NoTitleBar”的内容应用于活动。 如果您想要标题栏,请搜索正确的Android样式。
  2. 向活动传递表示用户选择的导航元素的额外信息。 这将由活动用于定位三角形指针。
  3. 在活动的onCreate()方法中处理此额外信息,方法是通过代码绘制三角形/指针。 这意味着您将想要在onCreate()中调用setContentView(...),然后获取对ViewGroup(即RelativeLayout,AbsoluteLayout等)的引用。 一旦您拥有了它,就可以调用ViewGroup#addView(View child,int index)来添加表示三角形的ImageView。 您可能想使用index = 0。
  4. 确保以编程方式添加的任何视图都不被XML中的元素覆盖(即隐藏)。
  5. 添加三角形相对容易,但定位可能会变得棘手。 首先,您发布的屏幕截图假定设备宽度固定,这对于需要在1000多种屏幕尺寸上工作的市场中的Android应用程序来说是不正确的。 三角形/指针的Y坐标不是问题,因为顶部导航栏的高度可能是硬编码的。 它的X坐标可能会变得棘手。 如果顶部导航栏元素拉伸怎么办? 假设我们有一种强大/合理的方法来获取三角形/指针中心应该位于的X位置。 鉴于此,我会尝试在我的Activity中使用垂直LinearLayout,并使用带有左边距的ImageView来表示三角形/指针。 这只是一个猜测,您可能需要调整此内容以获取特定实现的正确视图元素和定位策略。

这样一个强大/可靠的方法可能是在顶部导航栏上添加一个触摸事件处理程序,并跟踪触摸/点击的x坐标。 - Tenacious
1
除了创建活动之外,我还可以创建对话框,但如果用户触摸弹出区域以外的其他地方,我希望它能关闭。 - dinesh sharma

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接