0

我将首先介绍一下我希望我的应用程序是什么样的。

http://img806.imageshack.us/i/whatiwant.jpg/

我已经能够使用RelativeLayout 在同一布局中实现该按钮栏和ImageView。

现在我的问题是我想知道一种方法来显示按下按钮 1 后出现的窗口/弹出窗口/对话框。

我对生成的那个窗口有什么要求: 1. 它应该有一个半透明的背景。2. 当失去焦点时它应该关闭自己 3. 应该有可以在主应用程序中触发事件的按钮和动作监听器。

我一直在看安卓。PopupWindow 但我在获得帮助时遇到了很多问题,即它的动作监听器、解雇等。所以我放弃了这个想法。

现在我正在处理对话框。到目前为止,我只能显示一个对话框。问题 1. 自定义 Height 和 Width 属性由于某种原因不起作用(使用 Layout Params 实现) 2. 如何拥有半透明背景?3. 失去焦点时如何关闭/隐藏对话框?

我的问题是,除了对话还有什么更好的方法吗?如果是这样,请告诉我它们是什么。如果使用对话框是要走的路,我应该如何解决上述问题?

任何帮助,将不胜感激。

谢谢你。

4

2 回答 2

4

PopupWindow 是一个更好的选择。检查AutoCompleteTextView的 PopupWindow 示例。要创建 PopupWindow 使用

PopupWindow myWindow = new PopupWindow( content_view, width, height, true )

如果您想在 popupWindow 被解除时执行任何操作,请使用 DismissListener。

动作侦听器也独立于 PopupWindow,即如果您在 content_view 中有一个按钮,那么您可以像在正常情况下设置它一样设置 onClick 侦听器。

您应该设置 PopupWindow 背景,否则按下后退按钮不会关闭它。

于 2011-03-29T14:46:20.133 回答
0

我的想法是:

  1. 使“对话框”成为布局的元素,但最初使用 android:visibility = “gone”。确保将其作为 RelativeLayout 中的最后一个元素,使其高于所有其他布局元素(z 排序)。

  2. 在按钮 1 的 onClick 方法中,将可见性切换为“可见”。

  3. 在视图的 OnFocusChangeListener 中,只要 hasFocus 为 false,在 onFocusChange(View v, boolean hasFocus) 方法中将其切换回“已消失”。

编辑:要使对话框成为布局的元素,您可以执行以下操作:

<RelativeLayout>
  <!-- Your other layout items here -->
  <LinearLayout
    android:id="@+dialoglayout"
    android:layout_alignBelow="@id/yourbuttonbarlayout
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp">
    <!-- Your dialog elements here -->
  </LinearLayout>
</RelativeLayout>

确保给你的按钮栏布局一个id(我假设你的buttonbarlayout为id。如果你想要三个这样的对话框,你可以给它们所有相同的布局参数并切换各个可见性。它们都可以显示在同一个点。

您始终可以为布局使用背景来模拟边框。

于 2011-03-29T14:18:51.800 回答