繁体   English   中英

安卓 如何使对话框按钮在对话框外出现一些

[英]Android. How to make dialog buttons appear a bit outside the dialog

我需要有一个对话框(这是游戏对话框),其中按钮位于对话框的下角。 不在对话框内部 ,而是在角落(即,按钮的一部分将位于对话框上方,而部分将位于对话框外部)。

首先,据我所知,您不能将布局子级移到其父级之外。

我从未尝试过您要做什么,但我认为可以做到。 技巧是进行带有对话框主题的活动(您可以在开发人员站点或API演示中找到这些示例)。 确保布局的根节点的宽度和高度设置为wrap_content。 您的根目录布局应为RelativeLayout且没有背景(android:background =“#0000”)。

接下来,使用自定义可绘制背景为背景(或使用框架中默认对话框使用的自定义图形)并将宽度和高度设置为fill_parent或match_parent,向根节点添加另一种布局(FrameLayout可能会起作用)。 将android:padding设置为某个dip值,该值将从对话框的边缘拉入背景。

剩下要做的就是将其他布局元素添加到根节点。 FrameLayout将绘制在其他所有内容的下方,并且填充将创建不包含UI的边框错觉。

更新 Yikes,只是尝试了上述结果,但结果却不尽人意。 首先,您肯定要看一下API演示中的“自定义对话框”示例,该示例利用了:

创建一个使用上述xml布局文件的活动,并将该活动的样式设置为您在xml / styles.xml中定义的Theme.CustomDialog。 这将为您的活动提供红色背景。 然后,您可以将fill_box形状文件编辑为仅将一个背景属性设置为不可见(“#0000”)。 结果应该是没有背景的对话框形状的活动。

接下来,我尝试使用上面的想法来破解背景。 这个想法应该是在其他UI元素后面绘制一个假的背景,而不包含它们,因此可以使用layout_margin将其“缩小”并且不影响它们。 这里的问题是,假音背景需要将其宽度和高度设置为相对于其他UI元素的高度,因此它需要通过HAS来包含它们,以便可以正确地测量其相对于它们的宽度和高度。

因此,我认为解决方案可能是做我上面所说的大部分事情,除非不要尝试虚假的背景操作。 只需对根布局背景使用9补丁可绘制对象,然后将背景边缘缩小到比内容更远的位置即可。 您仍将上面的自定义主题内容与不可见的窗口主题一起使用。

这是我尝试的示例布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
 >
<FrameLayout
android:orientation="vertical"
android:id="@+id/ll1" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@android:drawable/dialog_frame">
</FrameLayout>
<Button android:layout_width="wrap_content"
 android:id="@+id/button1" 
 android:layout_height="wrap_content"
 android:layout_marginTop="35dp"
 android:layout_centerHorizontal="true"
  android:text="Button"></Button>
</RelativeLayout>

这是屏幕截图: 布局样本

希望你能得到提示,祝你好运

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM