作为对话框的 Android 活动:无法正确显示布局内容

Posted

技术标签:

【中文标题】作为对话框的 Android 活动:无法正确显示布局内容【英文标题】:Android activity as Dialog: Doesn't display layout content properly 【发布时间】:2017-09-13 19:10:59 【问题描述】:

我有一个DialogActivity,一个EditText 和一个Button。这是布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical"
    android:background="@color/colorPrimaryLight2">

    <EditText
        android:id="@+id/input_username"
        android:layout_
        android:layout_
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:inputType="textEmailAddress"
        android:textColor="@color/colorPrimary"
        android:textColorHint = "@android:color/secondary_text_light_nodisable"
        android:hint="Contact ID"
        android:padding="15dp"/>

    <Button
        android:id="@+id/btn_login"
        android:layout_
        android:layout_
        android:layout_below="@+id/input_username"
        android:layout_centerHorizontal="true"
        android:padding="12dp"
        android:background="@drawable/elevation"
        android:textColor="@color/colorPrimary"
        android:text="Add Contact"/>

</RelativeLayout>

清单中的活动:

<activity android:name=".AddContactActivity"
    android:screenOrientation="portrait"
    android:label="Add Contact"
    android:theme="@style/Theme.AppCompat.Light.Dialog">
</activity>

我的活动是什么样子的:

问题是布局的活动内容重叠。我需要的是对话框的高度应该包含Activity的内容。

任何帮助都会很棒!谢谢。

【问题讨论】:

【参考方案1】:

EditText 中删除android:layout_centerVertical="true"。最终布局应如下所示。

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

    <EditText
        android:id="@+id/input_username"
        android:layout_
        android:layout_
        android:layout_centerHorizontal="true"
        android:hint="Contact ID"
        android:inputType="textEmailAddress"
        android:padding="15dp"
        android:textColor="@color/colorPrimary"
        android:textColorHint="@android:color/secondary_text_light_nodisable" />

    <Button
        android:id="@+id/btn_login"
        android:layout_
        android:layout_
        android:layout_marginTop="16dp"
        android:layout_below="@+id/input_username"
        android:layout_centerHorizontal="true"
        android:padding="12dp"
        android:text="Add Contact"
        android:textColor="@color/colorPrimary" />

</RelativeLayout>

【讨论】:

并在RelativeLayout中添加android:padding="30dp",解决了我的问题。接受这个作为答案。谢谢。 很高兴知道这有帮助!【参考方案2】:

只需从您的EditText 中删除属性android:layout_centerHorizontal="true"android:layout_centerVertical="true"

如下更新您的对话框布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:orientation="vertical"
    android:background="@color/colorPrimaryLight2">

    <EditText
        android:id="@+id/input_username"
        android:layout_
        android:layout_
        android:inputType="textEmailAddress"
        android:textColor="@color/colorPrimary"
        android:textColorHint = "@android:color/secondary_text_light_nodisable"
        android:hint="Contact ID"
        android:padding="15dp"/>

    <Button
        android:id="@+id/btn_login"
        android:layout_
        android:layout_
        android:layout_below="@+id/input_username"
        android:layout_centerHorizontal="true"
        android:padding="12dp"
        android:background="@drawable/elevation"
        android:textColor="@color/colorPrimary"
        android:text="Add Contact"/>

</RelativeLayout>

输出:

希望对你有帮助~

【讨论】:

是的!正是..! 如果我的回答有帮助,请将其标记为已接受的答案并给予支持。 ***.com/help/someone-answers 当然!我投了赞成票,但我的声誉很低。投票我的问题可能会有所帮助。

以上是关于作为对话框的 Android 活动:无法正确显示布局内容的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Android 中开始活动之前显示进度对话框?

Android Activity 作为一个对话框

android自定义对话框背景

布尔玛汉堡菜单不显示项目

活动作为对话框隐藏第一个活动

WIX安装程序无法正确显示WixUI对话框的自定义图像