如何在xml中更改对话框片段大小?

时间:2019-04-12 18:32:27

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

我正在使用Dialog片段显示对话框。但是,我的对话框没有以喜欢的大小显示,并且非常小。我使用“ match_parent”设置了大小,但显示的效果并不理想。

对话框xml代码:

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

    <TextView
        android:textSize="18sp"
        android:textColor="@color/color_white"
        android:gravity="center"
        android:text="لطفا وارد حساب کاربری خود شوید"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:background="@color/colorPrimary" />
    <EditText
        android:id="@+id/edt_loginDialog_email"
        android:layout_marginRight="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:gravity="center"
        android:drawableRight="@drawable/ic_email_black_24dp"
        android:hint="پست الکترونیک"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <EditText
        android:drawableRight="@drawable/ic_vpn_key_black_24dp"
        android:id="@+id/edt_loginDialog_pass"
        android:layout_marginRight="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:gravity="center"
        android:hint="پست الکترونیک"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <TextView
        android:layout_marginRight="16dp"
        android:layout_marginLeft="16dp"
        android:layout_marginTop="8dp"
        android:layout_marginBottom="8dp"
        android:layout_gravity="right"
        android:text="فراموشی رمز عبور"
        android:drawableRight="@drawable/ic_vpn_key_black_24dp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <LinearLayout
        android:padding="8dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

        <Button
            android:id="@+id/btn_loginDialog_signup"
            android:layout_marginRight="4dp"
            android:textColor="@color/color_white"
            android:fontFamily="@font/font"
            android:background="@drawable/btn_signup_style"
            android:text="ثبت نام"
            android:layout_weight="0.5"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />
        <Button
            android:id="@+id/btn_loginDialog_login"
            android:layout_marginLeft="4dp"
            android:textColor="@color/color_white"
            android:fontFamily="@font/font"
            android:background="@drawable/btn_call_style"
            android:text="ورود"
            android:layout_weight="0.5"
            android:layout_width="0dp"
            android:layout_height="wrap_content" />
    </LinearLayout>

这是我的对话框片段代码,显示了如何实现它

public class LoginDialog extends DialogFragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.login_dialog,container,false);
        Button btnLogin=(Button)view.findViewById(R.id.btn_loginDialog_login);
        Button btnSignup=(Button)view.findViewById(R.id.btn_loginDialog_signup);
        EditText edtEmail=(EditText)view.findViewById(R.id.edt_loginDialog_email);
        EditText edtPass=(EditText)view.findViewById(R.id.edt_loginDialog_pass);
        return view;
    }
}

这是我的对话框图片链接:

enter image description here

2 个答案:

答案 0 :(得分:0)

将此添加到您的dialogFragment的onStart()

dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

答案 1 :(得分:0)

如果要在xml中设置对话框大小,请尝试以下操作:


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

        <LinearLayout 
          android:layout_width="<desire size>"
          android:layout_height="<desire size>">

          ....
        </LinearLayout>
    </LinearLayout>

但我选择的武器是通过程序设置大小的。

  • 百分比大小:

    @Override
    public void onStart() {
        super.onStart();
        int dialogWidth = (int) (getResources().getDisplayMetrics().widthPixels * 0.9f);
        int dialogHeight = (int) (getResources().getDisplayMetrics().heightPixels * 0.8f);
        if (getDialog().getWindow() == null) return;
        getDialog().getWindow().setLayout(dialogWidth, dialogHeight);
    }

  • Dp大小:

    @Override
    public void onStart() {
        super.onStart();
        //Reference to dimens.xml 
        //<dimen name="dialog_with">200dp</dimen>
        //<dimen name="dialog_height">200dp</dimen>
        int dialogWidth = getResources().getDimensionPixelSize(R.dimen.dialog_width);
        int dialogHeight = getResources().getDimensionPixelSize(R.dimen.dialog_height);
        if (getDialog().getWindow() == null) return;
        getDialog().getWindow().setLayout(dialogWidth, dialogHeight);
    }