【问题标题】:change the height of custom dialog in Dialog Fragment在 Dialog Fragment 中更改自定义对话框的高度
【发布时间】:2011-10-31 18:12:20
【问题描述】:

我创建了一个自定义对话框,代码如下。问题是,对话框的高度变成了 wrap_content,即它与我在 xml 中提到的高度无关。我检查了其他问题,它们对我没有帮助。

public class PointsDialogFragment extends DialogFragment{

    private static final String TAG = PointsDialogFragment.class.getSimpleName();

    public static PointsDialogFragment newInstance(){
        PointsDialogFragment pdf = new PointsDialogFragment();
        Bundle newBundle = new Bundle();
        pdf.setArguments(newBundle);
        return pdf;
    }

    private View mRoot;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        getDialog().requestWindowFeature(STYLE_NO_TITLE);
        mRoot = inflater.inflate(R.layout.fragment_points_dialog, null);
        return mRoot;
    }
}

fragment_points_dialog.xml 的 xml 是

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="313dp"
    android:layout_width="fill_parent"
    android:background="@color/green_gradient_start"
>
    <RelativeLayout 
        android:layout_width="173dp"
        android:layout_height="242dp"
        android:background="@drawable/reward_box"
        android:id="@+id/reward_box"
        android:layout_alignParentLeft="true"
    >
        <TextView 
            android:layout_centerInParent="true"
            style="@style/WallSectionHeading"
            android:text="5"
        />
    </RelativeLayout>
    <RelativeLayout 
        android:layout_width="173dp"
        android:layout_height="250dp"
        android:background="@drawable/reward_mascot"
        android:layout_alignParentRight="true"
    >
        <LinearLayout
            android:id="@+id/reward_cloud"
            android:layout_width="wrap_content"
            android:layout_height="100dp"
            android:background="@drawable/reward_cloud"
            android:layout_alignParentBottom="true"
        >
            <TextView
                android:layout_gravity="center_vertical"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="You have gained 5 Delight Points"
                android:textColor="@color/white"
                android:textStyle="italic"
                android:paddingLeft="15dp"
                android:paddingRight="10dp"
            />
        </LinearLayout>

    </RelativeLayout>

</RelativeLayout>

我正在显示这样的对话框..

PointsDialogFragment pdf = PointsDialogFragment.newInstance();
pdf.show(getFragmentManager(), "dialog");

我想知道一种可以在对话框片段中更改对话框高度的方法。

【问题讨论】:

    标签: android android-layout android-dialog android-dialogfragment


    【解决方案1】:

    我认为问题在于,当您为 View 充气时,您并没有提供 ViewParent。当您不提供该参数时,视图根目录中的任何“layout_X”参数都将被忽略,因为这些值已提供给父级(在当前情况下为 null)。您可以做的是在膨胀时提供 ViewParent 或将您的 View XML 包装在另一个 ViewGroup 中,将绝对布局参数留在第二级。

    示例代码: mRoot = inflater.inflate(R.layout.fragment_points_dialog, container, false);

    【讨论】:

    • mRoot = inflater.inflate(R.layout.fragment_points_dialog, 容器);这个答案是否正确???
    【解决方案2】:

    在您的 DialogFragment xml 中,使用 RelativeLayout 而不是使用 LinearLayout 并将 layout_height 设置为 wrap_content 它将自动调整视图大小。

    确保不要使用对齐父底部,否则它会填满屏幕。

    【讨论】:

    • 这个对我有用。还要确保没有子视图使用 match_parent 作为高度,这样它就不会填满屏幕。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-30
    • 2013-06-24
    • 1970-01-01
    相关资源
    最近更新 更多