tipos studio programacion personalizado móviles mensaje dialogos dialogo desarrollo curso crear aplicaciones alerta android android-layout android-dialog

programacion - mensaje de alerta en android studio



Android obtiene ancho completo para diálogos personalizados (7)

en mi aplicación, mi cuadro de diálogo personalizado creado no tiene la altura completa y no puedo cambiarlo y personalizarlo. Por ejemplo, vea esta captura de pantalla:

Mi código:

final Dialog contacts_dialog = new Dialog(ActivityGroup.this, R.style.theme_sms_receive_dialog); contacts_dialog.setContentView(R.layout.dialog_schedule_date_time); contacts_dialog.setCancelable(true); contacts_dialog.setCanceledOnTouchOutside(true); contacts_dialog.show();

diseño:

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layoutRoot" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@null" android:orientation="vertical" > <LinearLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/shape_header_dialog_background" android:orientation="horizontal" android:padding="4dp" > <TextView android:id="@+id/TextView21" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_marginRight="5dp" android:layout_weight="2" android:gravity="center_vertical|right" android:text="@string/choose_schedule_time_date" android:textColor="#ffffff" android:textSize="14sp" android:textStyle="bold" /> <ImageView android:id="@+id/ImageView03" android:layout_width="50dp" android:layout_height="50dp" android:layout_marginTop="0dp" android:background="@drawable/icon_scudule_time" /> </LinearLayout> </LinearLayout>

Estilo:

<style name="theme_sms_receive_dialog" parent="android:style/Theme.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:background">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="numberPickerStyle">@style/NPWidget.Holo.Light.NumberPicker</item> </style>


En caso de que alguien se esté preguntando cómo hacerlo para un cuadro de diálogo que se muestra con DialogFragment , puede anular onCreateDialog para devolver un onCreateDialog de diálogo con un estilo personalizado que tiene windowMinWidthMajor y menor establecido en 90%

@NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { return new Dialog(getActivity(), R.style.WideDialog); }

Estilo:

<style name="WideDialog" parent="Base.Theme.AppCompat.Dialog"> <item name="android:windowMinWidthMajor">90%</item> <item name="android:windowMinWidthMinor">90%</item> </style>


En mi caso, el ancho del diálogo personalizado se reduce en tamaño (ancho) a medida que el contenido dentro del diálogo se reduce en ancho aunque la propiedad de ancho se haya establecido.

android:layout_width="match_parent"

Acabo de fijar ese ancho al tamaño de la pantalla y ahora funciona de acuerdo con mi requisito

android:layout_width="320dp"


Esta respuesta podría ser útil para usted. Ancho de diálogo de Android


Necesitas obtener la ventana actual y configurar LayoutParams así:

myDialog.show(); Window window = myDialog.getWindow(); window.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);

Método 2

En caso de que el código anterior no funcione bien, puede utilizar una solución alternativa

styles.xml

<style name="mydialog"></style>

Java

Dialog d=new Dialog(mContext,R.style.mydialog); ......... ......... myDialog.show(); Window window = myDialog.getWindow(); window.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);


Para el diálogo de ancho completo puede crear un estilo personalizado para el diálogo. El código se da a continuación para el diálogo de ancho completo:

<style name="Custom_Dialog" parent="ThemeOverlay.AppCompat.Light" > <item name="windowMinWidthMajor">100%</item> <item name="windowMinWidthMinor">65%</item> </style>

Para asignar este estilo al constructor del diálogo, agréguelo al método onCreate() justo después de setContentView() :

getWindow() .setLayout( ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT );


Se pueden hacer dos formas, la primera en style.xml y la segunda en código:

  1. Agregue lo siguiente en style.xml, modifique el valor (actualmente 90%) para satisfacer sus necesidades.

<style name="Theme_Dialog" parent="android:Theme.Holo.Dialog"> <item name="android:windowMinWidthMajor">90%</item> <item name="android:windowMinWidthMinor">90%</item> </style>

  1. Añadir setlayout a match_parent

final Dialog contacts_dialog = new Dialog(ActivityGroup.this, R.style.theme_sms_receive_dialog); contacts_dialog.setContentView(R.layout.dialog_schedule_date_time);

getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT); contacts_dialog.setCancelable(true); contacts_dialog.setCanceledOnTouchOutside(true); contacts_dialog.show();


@Override public void onStart() { super.onStart(); Dialog dialog = getDialog(); if (dialog != null) { dialog.getWindow() .setLayout((int) (getScreenWidth(getActivity()) * .9), (int)(getScreenHeight(getActivity()) * .6) ); } } public static int getScreenWidth(Activity activity) { Point size = new Point(); activity.getWindowManager().getDefaultDisplay().getSize(size); return size.x; } public static int getScreenHeight(Activity activity) { Point size = new Point(); activity.getWindowManager().getDefaultDisplay().getSize(size); return size.y; }

Ejemplo de 90% de ancho y 60% de altura.