Изменить высоту настраиваемого диалога в диалоговом окне диалога
Я создал пользовательский диалог, код ниже. Проблема в том, что высота диалога становится wrap_content, то есть она не зависит от высоты, которую я упоминаю в xml. Я проверил другие вопросы, они не помогают мне.
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;
}
}
а xml для fragment_points_dialog.xml -
<?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>
Я показываю диалог вот так.
PointsDialogFragment pdf = PointsDialogFragment.newInstance();
pdf.show(getFragmentManager(), "dialog");
Я хотел бы знать способ, которым я могу изменить высоту диалога с помощью фрагмента диалога.
Ответы
Ответ 1
Я думаю, проблема заключается в том, что когда вы раздуваете представление, вы не поставляете ViewParent. Когда вы не укажете этот параметр, любые параметры "layout_X" в корне вашего представления будут проигнорированы, так как эти значения предоставляются родительскому объекту (который является нулевым в вашей текущей ситуации). То, что вы можете сделать, либо предоставить ViewParent при раздувании или переносе вашего XML-представления в другую ViewGroup, оставив абсолютные параметры макета на втором уровне.
Пример кода:
mRoot = inflater.inflate(R.layout.fragment_points_dialog, container, false);
Ответ 2
В вашем диалоговом окне DialogFragment вместо использования LinearLayout используйте RelativeLayout и установите layout_height в wrap_content, он автоматически изменит размер представления.
Удостоверьтесь, что не используйте выравнивание нижнего дна, иначе оно заполнит экран.