Search code examples
androiddialogimageviewandroid-linearlayout

How to put close imageview at top right corner with margin in a dialog?


enter image description here

I am trying to put an imageview having close image at top right corner with slightly outside margin. This is my layout for dialog:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@drawable/acl_data_info_bg_round"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/close_dialog"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="top|right"
        android:adjustViewBounds="true"
        android:paddingTop="-50dp"
        android:scaleType="fitStart"
        android:background="@drawable/freeg_logo"
        android:description="@null" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:paddingLeft="7.0dip"
        android:paddingRight="7.0dip"
        android:paddingTop="7.0dip"
        android:text="Free internet Consumed: 0.5 MB"
        android:textColor="#6d7780"
        android:textSize="18.0dip" />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:paddingLeft="7.0dip"
        android:paddingTop="7.0dip"
        android:text="Free internet Limit: 10 MB"
        android:textColor="#6d7780"
        android:textSize="18.0dip" />

    <Button
        android:id="@+id/button_hide_alertDialog"
        android:layout_width="60.0dip"
        android:layout_height="35.0dip"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="35.0dip"
        android:text="OK"
        android:textSize="15.0dip"
        android:textStyle="bold" />

    <Button
        android:id="@+id/textview_powered_by"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="25.0dip"
        android:background="@android:color/transparent"
        android:drawablePadding="5.0dip"
        android:drawableRight="@drawable/freeg_logo_acl_data_info"
        android:text="Powered by"
        android:textColor="#6d7780"
        android:textSize="10.0dip" />

</LinearLayout>

This is the code where i am inflating it:

alertDialog = new Dialog(context);

        alertDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
        alertDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);

        LayoutInflater inflater;

            inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);


        View convertView = inflater.inflate(R.layout.acl_data_info_screen, null, false);

        Button button_hide_alertDialog = (Button) convertView
                .findViewById(R.id.button_hide_alertDialog);

        button_hide_alertDialog.setOnClickListener(new OnClickListener() 
        {

            @Override
            public void onClick(View v)
            {
                if(alertDialog != null && alertDialog.isShowing())
                    alertDialog.dismiss();
            }
        });

        alertDialog.setContentView(convertView);

        // show it
        alertDialog.show();

I have gone through all the available posts on stackoverflow but none of them is able to solve my problem. Please help me. Thanks in advance.

By using android:layout_marginTop="-15dp", i am getting this output: enter image description here


Solution

  • <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@android:color/transparent"
    android:orientation="vertical">
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@android:color/transparent"
        android:orientation="vertical">
    
        <ImageView
            android:id="@+id/close_dialog"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_gravity="top|right"
            android:layout_marginRight="10dp"
            android:layout_marginTop="10dp"
            android:adjustViewBounds="true"
            android:background="@android:color/white"
            android:description="@null"
            android:scaleType="fitStart" />
    </LinearLayout>
    
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:background="@android:color/white">
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:paddingLeft="7.0dip"
            android:paddingRight="7.0dip"
            android:paddingTop="7.0dip"
            android:text="Free internet Consumed: 0.5 MB"
            android:textColor="#6d7780"
            android:textSize="18.0dip" />
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:paddingLeft="7.0dip"
            android:paddingTop="7.0dip"
            android:text="Free internet Limit: 10 MB"
            android:textColor="#6d7780"
            android:textSize="18.0dip" />
    
        <Button
            android:id="@+id/button_hide_alertDialog"
            android:layout_width="60.0dip"
            android:layout_height="35.0dip"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="35.0dip"
            android:text="OK"
            android:textSize="15.0dip"
            android:textStyle="bold" />
    
        <Button
            android:id="@+id/textview_powered_by"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center_horizontal"
            android:layout_marginTop="25.0dip"
            android:background="@android:color/transparent"
            android:drawablePadding="5.0dip"
            android:text="Powered by"
            android:textColor="#6d7780"
            android:textSize="10.0dip" />
    
    </LinearLayout>
    </LinearLayout>
    

    Just add this LinearLayout around your ImageView. So don't delete anything, just add the LinearLayout.

    EDIT :

    Make sure your top Layout also has background="#android:color/transparent". Then use another LinearLayout with a background for the rest of the content.

    This should do the trick. Replace the backgrounds etc with your own @drawables. But I tested it with a white background, and it is the desired output.

    Picture of my output :

    enter image description here