我正在使用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;
}
}
这是我的对话框图片链接:
答案 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);
}
@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);
}