jueves, 15 de enero de 2015

Android: DialogFragment as Toast


Toast dialog class
public static class ToastDialog extends DialogFragment {

        public interface EditNameDialogListener {

            public void onDimiss();
        }

        private TextView mEditText;
        private EditNameDialogListener listener;

        public ToastDialog() {
            // Empty constructor required for DialogFragment
        }

        public static ToastDialog newInstance(String title, String text) {
            ToastDialog frag = new ToastDialog();
            Bundle args = new Bundle();
            args.putString("title", title);
            args.putString("text", text);
            frag.setArguments(args);
            return frag;
        }

        @Override
        public void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);

            setStyle(DialogFragment.STYLE_NO_TITLE, R.style.my_dialog);
        }

        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container,
                Bundle savedInstanceState) {
            View view = inflater.inflate(R.layout.toast_text_only, container);
            mEditText = (TextView) view.findViewById(R.id.toast_text);
            mEditText.setMovementMethod(LinkMovementMethod.getInstance());
            mEditText.setClickable(true);
            mEditText.setLinksClickable(true);
            mEditText.setText(getArguments().getString("text"));
            TextView titleText = (TextView) view.findViewById(R.id.toast_text_title);
            titleText.setText(getArguments().getString("title"));
            getDialog().setTitle(getArguments().getString("title"));
            return view;
        }

        @Override
        public void onDismiss(DialogInterface dialog) {

            super.onDismiss(dialog);

            if (listener != null) {
                listener.onDimiss();
            }
        }

        public void setListener(EditNameDialogListener listener) {
            this.listener = listener;
        }

    }
res/values/styles
<style name="my_dialog" parent="@android:style/Theme.Dialog">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowTitleStyle">@null</item>
        <item name="android:colorBackgroundCacheHint">@null</item>
        <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
        <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
        <item name="android:gravity">center</item>
    </style>
User
FragmentManager fm = activity.getSupportFragmentManager();
        ToastDialog editNameDialog = ToastDialog.newInstance(title, text);
        editNameDialog.show(fm, "fragment_toast");
res/layout
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:background="#C8000000"
     android:orientation="vertical">
     
 <TextView 
     android:id="@+id/toast_text_title"
     android:layout_width="wrap_content"
     android:minHeight="40dp"
     android:layout_height="wrap_content"
     android:textColor="#762b76"
     android:layout_marginBottom="10dp"
     android:layout_marginTop="10dp"
        android:paddingLeft="40dp"
     android:paddingRight="40dp"  
     android:textSize="22sp" />    

 <LinearLayout 
     android:layout_width="fill_parent"
     android:layout_height="1dp"
        android:layout_marginLeft="20dp"
     android:layout_marginRight="20dp" 
     android:background="@color/text_color_1" />
      
 <TextView 
     android:id="@+id/toast_text"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:paddingTop="10dp" 
        android:paddingLeft="40dp"
     android:paddingRight="40dp" 
     android:textColor="@color/text_color_1"
     android:textSize="20sp"
     android:lineSpacingMultiplier="1.3"
     android:layout_marginBottom="10dp"
     android:layout_gravity="center_vertical" />
 
</LinearLayout>

No hay comentarios:

Publicar un comentario