Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将对话框宽度设置为全屏_Android_Kotlin_Android Alertdialog - Fatal编程技术网

Android 将对话框宽度设置为全屏

Android 将对话框宽度设置为全屏,android,kotlin,android-alertdialog,Android,Kotlin,Android Alertdialog,是的,这有几个问题,但没有一个方法是有效的 我正在尝试将对话框宽度扩展到全屏 对话框布局: <?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/a

是的,这有几个问题,但没有一个方法是有效的

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

对话框布局:

<?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>



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

    您可以创建一个自定义的
    片段对话框
    并执行以下操作

    @Override
    public void onResume() {
        // Resize the dialog to full screen.
        if (getDialog() != null && getDialog().getWindow() != null) {
            Window window = getDialog().getWindow();
            window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT);
        }
        super.onResume();
    }
    
    片段对话框的教程


    尝试使用
    对话框
    而不是
    警报对话框
    ,这样您就可以随心所欲地创建自定义对话框

    此外,您还可以:

    public class CustomDialog extends Dialog{
    
        public void onCreate(Bundle savedInstance) {
    
            super.onCreate(savedInstance);
    
            setContenctView(R.layout.custom_layout);
    
            // You can manipulate the Dialog using         
            //Window window = getDialog().getWindow();
    
    
        }      
    
    }
    

    看看这个样品。这可能对你有帮助

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

     <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>
    
    试试这个

    创建自定义对话框组件

    import android.app.Dialog;
    import android.content.Context;
    import android.os.Bundle;
    import android.support.annotation.NonNull;
    
    public class CustomDialog extends Dialog {
    
         public CustomDialog(@NonNull Context context) {
            super(context);
        }
    
        public CustomDialog(@NonNull Context context, int themeResId) {
            super(context, themeResId);
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.dialog_layout);// use your layout in place of this.
    
        }
    }
    
    在你想要的地方写下面的代码

    CustomDialog dialog=new CustomDialog(MainActivity.this, android.R.style.Theme_Material_Light_NoActionBar_Fullscreen);
                    dialog.show();
    

    对于kotlin中的simple
    AlertDialog
    ,您可以使用

    alertDilog.getWindow().setLayout(
                    LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
    
    alertDilog.show()之后


    这里的
    AlertDialog
    android.support.v7.app.AlertDialog

    如果使用约束Layout,它将无法使用正确的匹配约束。为了获得布局参数,请将它们应用于onAttachedToWindow方法

    class DialogDownloadFinished(context : Context) : Dialog(context) {
    
        override fun onCreate(savedInstanceState: Bundle?) {
           super.onCreate(savedInstanceState)
           val dialogView =  DialogDownloadFinishedBinding.inflate(LayoutInflater.from(context),null,false)
           requestWindowFeature(Window.FEATURE_NO_TITLE)
           setContentView(dialogView.root)
        }
    
        override fun onAttachedToWindow() {
           super.onAttachedToWindow()
           window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
           window.setGravity(Gravity.TOP)
        }
    }
    

    你试过这个吗yes@Prem.但是它也不起作用。将你的
    ConstraintLayout
    high设置为
    android:layout\u width=“match\u parent”android:layout\u height=“match\u parent”
    我也试过了。无论我设置的高度是多少,它都像包裹内容一样。尝试使用
    Dialog
    而不是
    AlertDialog.Builder
    不,我想这样做。好的。但是相信我,复杂的对话框最好是
    片段对话框
    。然后你可以重用这个对话框,对你的文本字段做一些验证,更好地控制生命周期。太棒了。谢谢你的帮助。我尝试了许多解决方案,但这一个解决了问题我很高兴我能提供帮助:)
    alertDilog.getWindow().setLayout(
                    LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT)
    
    class DialogDownloadFinished(context : Context) : Dialog(context) {
    
        override fun onCreate(savedInstanceState: Bundle?) {
           super.onCreate(savedInstanceState)
           val dialogView =  DialogDownloadFinishedBinding.inflate(LayoutInflater.from(context),null,false)
           requestWindowFeature(Window.FEATURE_NO_TITLE)
           setContentView(dialogView.root)
        }
    
        override fun onAttachedToWindow() {
           super.onAttachedToWindow()
           window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
           window.setGravity(Gravity.TOP)
        }
    }