我已经创建了一个自定义对话框,代码如下.问题是,对话框的高度正在变成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; } }
而fragment_points_dialog.xml的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");
我想知道一种方式,我可以在对话框片段中改变对话框的高度.
解决方法
我认为问题在于,当您夸张View时,您不会提供ViewParent.当您不提供该参数时,视图根目录中的“layout_X”参数将被忽略,因为这些值将提供给父级(在当前情况下为null).您可以做的是在将View XML放大或包装在另一个ViewGroup中时提供ViewParent,将绝对布局参数保留在第二级.
示例代码:mRoot = inflater.inflate(R.layout.fragment_points_dialog,container,false);