gpt4 book ai didi

android - 如何为自定义对话框设置边距?

转载 作者:IT王子 更新时间:2023-10-28 23:45:26 25 4
gpt4 key购买 nike

有人知道如何为自定义对话框设置边距吗?我问是因为我有一个自定义对话框,但是当显示它时它会拉伸(stretch)以填充父级,即使我在布局参数上明确设置了 WRAP_CONTENT。

基本上,对话框包含一个listview,其元素必须向下滚动,例如当元素为1时,它不会拉伸(stretch),但是当添加更多项目时,对话框会占据整个屏幕。

有什么建议吗?我尝试了所有可能的解决方案组合,但没有取得令人满意的结果

编辑:添加对话框布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="50dip"
android:orientation="vertical"
android:layout_gravity="top|center">

<FrameLayout android:layout_width="fill_parent" android:layout_margin="5dip" android:layout_height="wrap_content">

<TextView android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_gravity="center"
android:textSize="20sp" android:textColor="@color/black"/>

<Button android:layout_height="32dip" android:layout_width="32dip"
android:id="@+id/guide_dialog_cross_button"
android:background="@drawable/button_cross_white"/>

</FrameLayout>


<ListView android:layout_width="fill_parent" android:layout_height="wrap_content"
android:fadingEdge="none"
android:layout_margin="5dip"/>

<ImageButton android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_margin="5dip" />

</LinearLayout>

最佳答案

边距不适用于对话框,我想顶级窗口 View 不是支持边距的布局类型。我看过帖子说边距在定义为对话框的样式时会起作用(而不是在顶级 View 元素上),但这似乎也不起作用。

要解决此问题,您需要做的是为 Dialog 背景使用可绘制的 inset,并调整任何填充以考虑背景的额外插图。在下面的示例中,我将只设置左右边距。

对话框背景可绘制:

<?xml version="1.0" encoding="utf-8"?>
<!-- drawable is a reference to your 'real' dialog background -->
<!-- insetRight and insetLeft add the margins -->
<inset
xmlns:android="http://schemas.android.com/apk/res/android"
android:drawable="@drawable/dialog_background"
android:insetRight="10dp"
android:insetLeft="10dp">
</inset>

对话框主视图:

<?xml version="1.0" encoding="utf-8"?>
<!-- paddingTop / paddingBottom padding for the dialog -->
<!-- paddingLeft / paddingRight padding must add the additional inset space to be consistent -->
<!-- background references the inset background drawable -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:paddingBottom="5dp"
android:paddingLeft="15dp"
android:paddingRight="15dp"
android:background="@drawable/dialog_background_inset">

<!-- ...the rest of the layout... -->

您可能还需要将 Dialog 本身的背景颜色设置为透明。像这样添加颜色资源:

<color name="transparent">#00000000</color>

并将对话框的窗口背景颜色设置为此(注意:不能直接指定颜色,eclipse会报错)

<style name="Dialog" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
</style>

这种样式应该作为 theme 参数传递给对话框的构造函数,如 new Dialog(context, R.style.Dialog);

关于android - 如何为自定义对话框设置边距?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6153489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com