10

He creado un cuadro de diálogo personalizado, el código está a continuación. El problema es que la altura del diálogo se está volviendo wrap_content, es decir, es independiente de la altura que menciono en el xml. He verificado otras preguntas, no me han ayudado.cambiar la altura del cuadro de diálogo personalizado en el Fragmento de diálogo

public class PointsDialogFragment extends DialogFragment{ 

    private static final String TAG = PointsDialogFragment.class.getSimpleName(); 

    public static PointsDialogFragment newInstance(){ 
     PointsDialogFragment pdf = new PointsDialogFragment(); 
     Bundle newBundle = new Bundle(); 
     pdf.setArguments(newBundle); 
     return pdf; 
    } 

    private View mRoot; 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
     getDialog().requestWindowFeature(STYLE_NO_TITLE); 
     mRoot = inflater.inflate(R.layout.fragment_points_dialog, null); 
     return mRoot; 
    } 
} 

y el xml para fragment_points_dialog.xml es

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_height="313dp" 
    android:layout_width="fill_parent" 
    android:background="@color/green_gradient_start" 
> 
    <RelativeLayout 
     android:layout_width="173dp" 
     android:layout_height="242dp" 
     android:background="@drawable/reward_box" 
     android:id="@+id/reward_box" 
     android:layout_alignParentLeft="true" 
    > 
     <TextView 
      android:layout_centerInParent="true" 
      style="@style/WallSectionHeading" 
      android:text="5" 
     /> 
    </RelativeLayout> 
    <RelativeLayout 
     android:layout_width="173dp" 
     android:layout_height="250dp" 
     android:background="@drawable/reward_mascot" 
     android:layout_alignParentRight="true" 
    > 
     <LinearLayout 
      android:id="@+id/reward_cloud" 
      android:layout_width="wrap_content" 
      android:layout_height="100dp" 
      android:background="@drawable/reward_cloud" 
      android:layout_alignParentBottom="true" 
     > 
      <TextView 
       android:layout_gravity="center_vertical" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="You have gained 5 Delight Points" 
       android:textColor="@color/white" 
       android:textStyle="italic" 
       android:paddingLeft="15dp" 
       android:paddingRight="10dp" 
      /> 
     </LinearLayout> 

    </RelativeLayout> 

</RelativeLayout> 

estoy mostrando diálogo como este ..

PointsDialogFragment pdf = PointsDialogFragment.newInstance(); 
pdf.show(getFragmentManager(), "dialog"); 

me gustaría saber una manera que puede cambiar la altura de la diálogo con en el fragmento de diálogo.

Respuesta

17

Creo que el problema es que cuando infla la vista, no está suministrando ViewParent. Cuando no se proporciona ese parámetro, se ignorará cualquier parámetro "layout_X" en la raíz de su Vista, ya que esos valores se suministran al padre (que es nulo en su situación actual). Lo que puede hacer es proporcionar un ViewParent al inflar o ajustar su View XML en otro ViewGroup, dejando los parámetros de diseño absolutos en el segundo nivel.

Código de ejemplo: mRoot = inflater.inflate(R.layout.fragment_points_dialog, container, false);

+0

mRoot = inflater.inflate (R.layout.fragment_points_dialog, container); si esta respuesta es correcta ??? – Ads

2

En su xml DialogFragment, en lugar de utilizar LinearLayout utilizar un RelativeLayout y establecer el layout_height a wrap_content va a cambiar automáticamente el tamaño de la vista.

Asegúrese de no usar la alineación de la parte inferior del padre, de lo contrario, se llenará la pantalla.

+0

Éste funciona para mí. También asegúrese de que las vistas secundarias no estén usando match_parent como alto para que no llene la pantalla. – mariozawa

Cuestiones relacionadas