我的 Activity 之一作为对话框的按钮没有出现

one of my Activity as dialog's buttons not appear

在创建 Activity 作为对话框时,我使用了带有 2 个 textView 和 2 个按钮的相对布局 .. textView 彼此在下方,两个按钮在 textViews 下彼此相邻 问题是,其中一个按钮没有出现在 运行 中,但它们都出现在预览中。有人可以纠正我吗?

XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    tools:context=".Pop">

    <TextView
        android:id="@+id/Title"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="msg title"
        android:textAlignment="gravity"
        android:textColor="@color/red"
        android:textSize="17dp"
        android:textStyle="bold"></TextView>

    <TextView
        android:id="@+id/msg"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:text="msg"
        android:textAlignment="gravity"
        android:textColor="@color/red"
        android:textSize="15dp"></TextView>
    <Button
        android:id="@+id/no"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginLeft="200dp"
        android:layout_marginTop="121dp"
        android:text="Not me"
        android:textColor="@color/red"></Button>

    <Button
        android:id="@+id/yes"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:layout_marginTop="121dp"
        android:layout_marginRight="200dp"
        android:text="Yes, I'm"
        android:textColor="#4CAF50">
    </Button>


</RelativeLayout>

预览:

运行:

您的按钮宽度设置为 match_parent,替换为 wrap_content,并将第二个按钮 'relative' 与第一个 android:layout_toEndOf

对齐
   *android:layout_width="match_parent"*
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_marginTop="121dp"
    android:layout_marginRight="200dp"

或使用加权线性布局

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content" 
    android:weightSum="4"
    android:orientation="horizontal"
    gravity="end">

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button" 
    android:layout_weight="1"/>

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Button"
    android:layout_weight="1"/>
但是由于性能问题,嵌套布局再次被劝阻。因此,研究约束布局可为您提供所有布局所需的灵活性。

但是如果您尝试显示一个对话框,您可以只使用本机 AlertDialog,您可以在其中添加否定按钮和肯定按钮。 还可以使用 start 而不是 right,例如 lollipop(API 级别 21)及更高版本的 alignParentStart。还要注意对话框中的硬编码边距。

编辑 如果你想让按钮每个占据一半的宽度。然后将它们的 layout_weight 设置为 0.25 或者只是线性布局 weightSum 的四分之一,然后将 gravity 设置为 end

这是解决方案:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#FFFFFF"
    tools:context=".PopUp"
    android:orientation="vertical">

    <TextView
        android:id="@+id/Title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="msg title"
        android:textAlignment="gravity"
        android:textColor="@color/red"
        android:textSize="17dp"
        android:textStyle="bold"></TextView>

    <TextView
        android:id="@+id/msg"
        android:layout_width="match_parent"
        android:layout_height="100dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="20dp"
        android:text="msg"
        android:textAlignment="gravity"
        android:textColor="@color/red"
        android:textSize="15dp"></TextView>

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:gravity="center_horizontal"
        android:layout_width="match_parent">

        <Button
            android:id="@+id/no"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:text="Not me"
            android:textColor="@color/red"></Button>

        <Button
            android:id="@+id/yes"
            android:layout_width="200dp"
            android:layout_height="wrap_content"
            android:text="Yes, I'm"
            android:textColor="#4CAF50"></Button>
    </LinearLayout>

</LinearLayout>