Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

change the height of custom dialog in Dialog Fragment

I have created a custom dialog, the code is below. The problem is that, the height of the dialog is becoming wrap_content, i.e it is independent of what ever the height i mention in the xml. I have checked other questions, they din't help me.

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;
    }
}

and the xml for fragment_points_dialog.xml is

<?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>

I am showing dialog like this..

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

I would like know a way i can change the height of the dialog with in the dialog fragment.

like image 987
Yashwanth Kumar Avatar asked Oct 31 '11 18:10

Yashwanth Kumar


1 Answers

I think the problem is that when you inflate the View, you're not supplying the ViewParent. When you don't supply that parameter, any "layout_X" parameters in the root of your View will be ignored, as those values are supplied to the parent (which is null in your current situation). What you can do is either supply a ViewParent when inflating or wrap your View XML in another ViewGroup, leaving the absolute layout parameters in the 2nd level.

Sample code: mRoot = inflater.inflate(R.layout.fragment_points_dialog, container, false);

like image 58
Jason Robinson Avatar answered Oct 14 '22 06:10

Jason Robinson