PageMaker
PageMaker

Reputation: 395

How to remove the border frame a dialogframe

This question has been answered for a Dialog to my knowledg not for a DialogFrame.

I would like to remove the border shown in this picture. Sorry no pictures allowed.

This is my code:

public class SettingDialogFragment extends DialogFragment {

    public SettingDialogFragment() {
        // constructor
    }   

    public Dialog onCreateDialog(Bundle savedInstanceState) {
        ContextThemeWrapper context = new ContextThemeWrapper(getActivity(), 0);

        context.setTheme(R.style.dialog);

        AlertDialog.Builder alertDlgBldr = new AlertDialog.Builder(getActivity());

        LayoutInflater inflater = getActivity().getLayoutInflater();

        alertDlgBldr.setView(inflater.inflate(R.layout.dialog_theme, null));

        return alertDlgBldr.create();
    }   
}

This is the layout:

<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <TextView
        android:id="@+id/dialog_title"
        style="@style/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:text="@string/dialog_theme_title"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@color/logo_color"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/dialog_text"
        style="@style/body"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/dialog_text"
        android:layout_below="@id/dialog_title"
        android:text="Demonstation how to use vector drawables to style a dialog box"
        android:textAppearance="?android:attr/textAppearanceSmall"
        android:textColor="@color/logo_color" />

    <ImageView
        android:id="@+id/dialog_image"
        android:layout_width="150dp"
        android:layout_height="150dp"
        android:layout_below="@id/dialog_text"
        android:layout_centerHorizontal="true"
        android:src="@drawable/cats_dogs" />

</RelativeLayout>

This is the style

<style
    name="dialog">
    <!-- title encapsulating main part (backgroud) of custom alertdialog -->
    <item
        name="android:windowFrame">@null</item>
        <!-- turn off any drawable used to draw a frame on the window -->
    <item
        name="android:windowBackground">@drawable/dialog_background</item>
        <!-- turn off any drawable used to draw a frame on the window -->
    <item
        name="android:windowIsFloating">true</item>
        <!-- float the window so it does not fill the screen -->
    <item
        name="android:windowNoTitle">true</item>
        <!-- remove the title bar we make our own-->
    <item
        name="android:windowContentOverlay">@null</item>
        <!-- remove the shadow from under the title bar -->
</style>

This the drawable

<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >
    <solid
        android:color="#00000000"/>
    <corners
        android:radius="10dp"/>
    <stroke
        android:color="#FFF000"
        android:width="3dp" />
</shape>

I think I tried every trick in the book now. Searched Stackoverflow for three days now, but most answers relate to Dialog not DialogFragment. Please help me out


This code resolved the problem, finally!

public class SettingDialogFragment extends DialogFragment {

    public SettingDialogFragment() {
        // this empty constructor without any parameter is required by Android
        // to in order to instantiate the fragment when it needs to do so.
    }   

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(STYLE_NORMAL, android.R.style.Theme_Light_Panel);
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        return super.onCreateDialog(savedInstanceState);
    }   

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.dialog_theme, container, false);

        return view;
    }
}

Upvotes: 1

Views: 4770

Answers (2)

Marc
Marc

Reputation: 1189

I used

public class EventAgeGateDialogFragment extends DialogFragment implements DatePicker.OnDateChangedListener {

    @Override
    public void onResume()
    {
        super.onResume();       
        getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme);
    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        final Dialog dialog = super.onCreateDialog(savedInstanceState);
        dialog.requestWindowFeature(DialogFragment.STYLE_NO_TITLE);
        View view = View.inflate(getActivity(), R.layout.the_dialog_layout, null);
        dialog.setContentView(view);  
        return dialog;
    }
}

Upvotes: 2

Mohit
Mohit

Reputation: 93

this line of code will help you

dialog.getWindow().setBackgroundDrawable(new ColorDrawable(0));

also check both links

  1. AlertDialog: How To Remove Black Borders Above and Below View
  2. DialogFragment remove black border

Upvotes: 1

Related Questions