使对话框宽度为全屏

Ank*_*009 3 android android-alertdialog kotlin

是的,这被问到了几种方式,但没有一种方法有效。

我正在尝试将对话框宽度扩展到全屏。

对话框布局:

<?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:id="@+id/constraint_layout"
        android:layout_width="match_parent"
        android:layout_height="300dp">

        <android.support.constraint.Guideline
            android:id="@+id/guideline3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintGuide_percent="0.08" />

        <TextView
            android:fontFamily="@font/gotham_medium_regular"
            android:textAllCaps="true"
            android:id="@+id/textView6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:text="Login"
            android:textAppearance="@style/Base.TextAppearance.AppCompat.Large"
            android:textStyle="bold"
            app:layout_constraintStart_toStartOf="@+id/guideline3"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:fontFamily="@font/gotham_light"
            android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
            android:layout_marginTop="8dp"
            app:layout_constraintStart_toStartOf="@+id/guideline3"
            app:layout_constraintTop_toBottomOf="@+id/textView6"
            android:id="@+id/textView7"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Enter your phone number to proceed" />

        <android.support.design.widget.TextInputLayout
            android:id="@+id/text_input"
            android:layout_marginTop="24dp"
            android:layout_width="0dp"
            app:layout_constraintTop_toBottomOf="@+id/textView7"
            android:layout_height="wrap_content"
            app:layout_constraintEnd_toEndOf="@+id/guideline4"
            app:layout_constraintStart_toStartOf="@+id/guideline3">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/userPhone"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fontFamily="@font/gotham_light"
                android:hint="PHONE NUMBER"
                android:inputType="phone"
                android:text="+91" />
        </android.support.design.widget.TextInputLayout>



        <android.support.constraint.Guideline
            android:id="@+id/guideline4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintGuide_percent="0.92" />


        <Button
            android:layout_marginBottom="@dimen/activity_horizontal_margin"
            android:id="@+id/continueButton"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:background="@drawable/button_background"
            android:fontFamily="@font/gotham_light"
            android:text="Continue"
            android:textColor="@android:color/white"
            app:layout_constraintEnd_toEndOf="@+id/guideline4"
            app:layout_constraintStart_toStartOf="@+id/guideline3"
            app:layout_constraintTop_toBottomOf="@+id/text_input" />


    </android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

对话代码:

 val dialogBuilder = AlertDialog.Builder(ContextThemeWrapper(context,R.style.ThemeDialog))
        val inflater = context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
        val dialogView = inflater.inflate(R.layout.mobile_bottom_sheet_layout, null)

        val phone = dialogView.findViewById<EditText>(R.id.userPhone)
        dialogBuilder.setView(dialogView)
        val alertDialog = dialogBuilder.create()

        val countinueButton = dialogView.findViewById<Button>(R.id.continueButton) as Button

        countinueButton.setOnClickListener {

            if(phone.text.toString().isEmpty()){
                phone.error=getString(R.string.empty)
                phone.requestFocus()
            }else if(phone.text.toString().length!=13){
                phone.error=getString(R.string.phone_length_error)
                phone.requestFocus()
            }else{

                checkIfTrainerExists(phone.text.toString(),this@LoginActivity);
            }

        }

        alertDialog.show()
Run Code Online (Sandbox Code Playgroud)

我尝试过的事情:

  1. /sf/answers/1996334161/
  2. /sf/answers/187646931/
  3. /sf/answers/464191731/

我也尝试过其他解决方案。但没有一个工作。

Nab*_*ada 5

看看这个示例Full Width Dialog。这可能对你有帮助。

在此处输入图片说明

为对话框创建样式,如下所示:

 <style name="FullWidth.Dialog" parent="Theme.AppCompat.DayNight.Dialog">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:windowFullscreen">false</item>
    <item name="android:background">@android:color/transparent</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <!--<item name="android:windowAnimationStyle">@style/DialogAnimation</item>-->
</style>
Run Code Online (Sandbox Code Playgroud)

将样式添加到您的对话框onCreateDialog中:

public class ChangePasswordDialog extends DialogFragment {

private Dialog dialog;

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
    dialog = new Dialog (getActivity(), R.style.FullWidth_Dialog); //this does the trick.
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
    View view = LayoutInflater . from (getActivity()).inflate(
        R.layout.dialog_change_password,
        null
    );
    dialog.setContentView(view);
    dialog.show();
    return dialog;
  }
}
Run Code Online (Sandbox Code Playgroud)