Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Quiero establecer la altura máxima en el fragmento de diálogo

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:minWidth="@dimen/dialog_min_width" android:padding="@dimen/dialog_padding" android:background="@drawable/dialog_background" > <TextView android:id="@+id/base_dialog_title" style="@style/DialogTitleTextViewStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:singleLine="true" android:gravity="center" /> <FrameLayout android:layout_width="match_parent" android:layout_height="16dp" > </FrameLayout> <!-- *********************** HERE ************************* --> <FrameLayout android:id="@+id/base_dialog_content" android:background="@drawable/dialog_description_background" android:layout_width="match_parent" android:layout_height="wrap_content"> </FrameLayout> <!-- *********************** HERE ************************* --> <FrameLayout android:layout_width="match_parent" android:layout_height="16dp" > </FrameLayout> <LinearLayout android:id="@+id/base_dialog_button_group" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:orientation="horizontal"> <Button android:id="@+id/base_dialog_button_negative" style="?android:attr/buttonStyleSmall" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:visibility="gone"/> <Button android:id="@+id/base_dialog_button_neutral" style="?android:attr/buttonStyleSmall" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:visibility="gone"/> <Button android:id="@+id/base_dialog_button_positive" style="?android:attr/buttonStyleSmall" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:visibility="gone"/> </LinearLayout> </LinearLayout> 

Este es el diseño del fragmento de diálogo.

Agregar vista de contenido (TextView o ListView) en FrameLayout (@ id / base_dialog_content)

Cuando ListView tiene muchos elementos, el cuadro de diálogo tiene altura completa en la ventana.

Quiero configurar el diálogo de altura máxima o la vista de contenido (o vista de lista)


Editar:

Resuelvo el problema usando OnLayoutChangeListener.

Pero necesito la misma función en la versión inferior (debajo de HoneyComb)

En DialogFragment.onCreateView ()

 FrameLayout contentContainer = (FrameLayout) view.findViewById(R.id.base_dialog_content); final View contentView = createContentView(inflater, contentContainer); contentContainer.addView(contentView); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // TODO Check content view height and change height } else { view.addOnLayoutChangeListener(new OnLayoutChangeListener() { @Override public void onLayoutChange(View v, int left, int top, int right, int bottom, int oldLeft, int oldTop, int oldRight, int oldBottom) { int height = v.getHeight(); int contentHeight = contentView.getHeight(); int winHeight = ActivityUtil.getDisplayHeight(getSherlockActivity()); LogUtils.pe(height+" / "+winHeight+" / "+contentHeight); int needHeight = height - winHeight*8/10; if (needHeight > 0) { contentView.setLayoutParams( new LayoutParams(LayoutParams.MATCH_PARENT, contentHeight-needHeight)); } } }); } 

2 Solutions collect form web for “Quiero establecer la altura máxima en el fragmento de diálogo”

Para controlar la altura máxima que tiene que poner la vista de contenido en un contenedor de diseño primero (Lineal / Relativo) digamos en mi ejemplo voy a utilizar linearlayout

Para medir la altura de la pantalla (lo pongo en Util.java):

 public static int getDisplayHeight(Context context) { WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = wm.getDefaultDisplay(); int height = display.getHeight(); return height; } 

Después de crear un contenedor:

 LinearLayout llContainerContent = new LinearLayout(context); LayoutParams lpContainerContent = new LayoutParams(LayoutParams.FILL_PARENT, (Util.getDisplayHeight(context) * 8) /10); llContainerContent.setLayoutParams(lpContainerContent); 

Después de que agregue el textview / listview al contenedor y luego agregue el contenedor al framelayout. Espero que mi respuesta sea lo suficientemente clara para usted, pero si tiene otra pregunta por favor no dude en preguntar en el comentario 🙂

Utilice este código para la altura y el ancho de pantalla completa del cuadro de diálogo

  WindowManager window = (WindowManager)context .getSystemService(Context.WINDOW_SERVICE); Display display = window.getDefaultDisplay(); displayheight = display.getHeight(); displaywidth = display.getWidth(); dialog.getWindow().setLayout(displaywidth , displayheight ); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.