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