首页 > 解决方案 > 片段没有宽度和高度

问题描述

在此处输入图像描述

您看到的 Dialog 是一个具有 Dialog 主题的活动。它里面的布局是一个片段,应该匹配它的宽度和高度。它是使用FragmentTransaction类以编程方式添加的。

问题是片段布局被挤在一起并且看起来很糟糕。我match_parent在 xml 中使用了片段布局和活动。

我如何阻止对话框被挤压在一起并具有更“自然”的大小?

活动

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
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"
tools:context="com.myapp.rangevoice2.RoundActivity">

<FrameLayout
    android:id="@+id/round_placeholder"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

</FrameLayout>
</android.support.constraint.ConstraintLayout>

分段

<FrameLayout 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"
tools:context="com.myapp.rangevoice2.CreateRoundFrag">

<!-- TODO: Update blank fragment layout -->

<android.support.constraint.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/white">

    <ImageView
        android:id="@+id/divider"
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_marginEnd="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:layout_weight="1"
        android:src="@color/place_autocomplete_prediction_primary_text_highlight"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/radioGroup" />

    <TextView
        android:id="@+id/numberOfHoles"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginLeft="16dp"
        android:layout_marginStart="16dp"
        android:text="@string/number_of_holes"
        android:textColor="@color/cast_expanded_controller_background_color"
        android:textSize="14sp"
        app:layout_constraintBottom_toTopOf="@+id/divider"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/radioGroup" />

    <RadioGroup
        android:id="@+id/radioGroup"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginTop="16dp"
        android:orientation="horizontal"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <RadioButton
            android:id="@+id/nineHoles"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginEnd="8dp"
            android:layout_marginRight="8dp"
            android:layout_weight="1"
            android:text="@string/nine_holes" />

        <RadioButton
            android:id="@+id/eighteenHoles"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:text="@string/eighteen_holes" />

    </RadioGroup>

    <TextView
        android:id="@+id/coursesTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginBottom="8dp"
        android:layout_marginLeft="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp"
        android:text="@string/courses"
        android:textColor="@color/cast_expanded_controller_background_color"
        app:layout_constraintBottom_toTopOf="@+id/divider2"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/divider" />

    <Spinner
        android:id="@+id/outSpinner"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:layout_marginTop="16dp"
        app:layout_constraintEnd_toStartOf="@+id/dash"
        app:layout_constraintTop_toBottomOf="@+id/divider" />

    <Spinner
        android:id="@+id/inSpinner"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@+id/outSpinner" />

    <ImageView
        android:id="@+id/divider2"
        android:layout_width="0dp"
        android:layout_height="1dp"
        android:layout_marginEnd="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:layout_weight="1"
        android:src="@color/place_autocomplete_prediction_primary_text_highlight"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/outSpinner" />

    <ImageView
        android:id="@+id/dash"
        android:layout_width="15dp"
        android:layout_height="3dp"
        android:layout_marginEnd="16dp"
        android:layout_marginRight="16dp"
        android:src="@color/cast_expanded_controller_background_color"
        app:layout_constraintBottom_toBottomOf="@+id/inSpinner"
        app:layout_constraintEnd_toStartOf="@+id/inSpinner"
        app:layout_constraintTop_toTopOf="@+id/inSpinner" />

    <TextView
        android:id="@+id/playersTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="16dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="16dp"
        android:text="@string/players"
        android:textColor="@color/cast_expanded_controller_background_color"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/divider2" />

</android.support.constraint.ConstraintLayout>

标签: androidandroid-fragmentsandroid-alertdialog

解决方案


自定义警报对话框android的高度和宽度。以下是代码

WindowManager.LayoutParams params = new WindowManager.LayoutParams();

params.copyFrom(alertDialog.getWindow().getAttributes());
params.width = 100;
params.height = 400;
params.x=-190;
params.y=80;
alertDialog.getWindow().setAttributes(params);

不确定,但希望它会起作用。


推荐阅读