自定义dialogfragment实现底部弹出框效果

demo下载:

自定义dialogfragment 底部弹出框 实现分享效果 - 下载频道 - CSDN.NET
http://download.csdn.net/detail/baidu_31093133/9853004

效果图:

dialogfragment

代码:

自定义dialogfragment:ShareDialogFragment.java
public class ShareDialogFragment extends DialogFragment implements View.OnClickListener {

    TextView tvShareFacebook;
    TextView tvShareWechat;
    TextView tvShareMoments;
    TextView tvCancelShare;
    private static ShareDialogFragment shareDialogFragment;

    public static ShareDialogFragment newInstance(String title, String message) {
        ShareDialogFragment shareDialogFragment = new ShareDialogFragment();
        Bundle bundle = new Bundle();
        bundle.putString("title", title);
        bundle.putString("message", message);
        shareDialogFragment.setArguments(bundle);
        return shareDialogFragment;
    }

    public static ShareDialogFragment newInstance() {
        if (shareDialogFragment == null) {
            ShareDialogFragment shareDialogFragment = new ShareDialogFragment();
        }
        return shareDialogFragment;
    }


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

        View view = inflater.inflate(R.layout.share_dialog, container, false);
        tvShareFacebook = (TextView) view.findViewById(R.id.tv_share_facebook);
        tvShareWechat = (TextView) view.findViewById(R.id.tv_share_wechat);
        tvShareMoments = (TextView) view.findViewById(R.id.tv_share_moments);
        tvCancelShare = (TextView) view.findViewById(R.id.tv_cancel_share);

        tvCancelShare.setOnClickListener(this);
        tvShareMoments.setOnClickListener(this);
        tvShareWechat.setOnClickListener(this);
        tvShareFacebook.setOnClickListener(this);

        return view;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setCancelable(true);

    }

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {

        // 不带style的构建的dialog宽度无法铺满屏幕
     //     Dialog dialog = new Dialog(getActivity());
       Dialog dialog = new Dialog(getActivity(), R.style.CustomDatePickerDialog);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.share_dialog);
        dialog.setCanceledOnTouchOutside(true);

        // 设置弹出框布局参数,宽度铺满全屏,底部。
        Window window = dialog.getWindow();
        WindowManager.LayoutParams wlp = window.getAttributes();
        wlp.gravity = Gravity.BOTTOM;
        wlp.width = WindowManager.LayoutParams.MATCH_PARENT;
        window.setAttributes(wlp);

        return dialog;
    }

    @Override
    public void onClick(View view) {
        int id = view.getId();
        switch (id) {
            case R.id.tv_share_facebook:
                shareClickListener.shareToFacebook();
                break;
            case R.id.tv_share_wechat:
                shareClickListener.shareToWechat();
                break;
            case R.id.tv_share_moments:
                shareClickListener.shareToComments();
                break;
            case R.id.tv_cancel_share:
                dismiss();
                break;
        }
    }

    private OnShareClickListener shareClickListener;

    public interface OnShareClickListener {
        void shareToFacebook();

        void shareToWechat();

        void shareToComments();
    }

    public void setOnShareClickListener(OnShareClickListener shareClickListener) {
        this.shareClickListener = shareClickListener;
    }
}
样式:
    <style name="CustomDatePickerDialog" parent="@style/AppTheme">
        <item name="android:layout_width">match_parent</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:windowIsFloating">true</item>
    </style>
布局文件:share_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#f3f3f3"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="10.0dp"
        android:text="分享"
        android:textSize="14.0sp" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20.0dp"
        android:layout_marginBottom="20.0dp"
        android:orientation="horizontal">

        <TextView
            android:id="@+id/tv_share_facebook"
            android:layout_width="0.0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawablePadding="5.0dp"
            android:drawableTop="@drawable/facebook"
            android:gravity="center_horizontal"
            android:text="facebook" />

        <TextView
            android:id="@+id/tv_share_wechat"
            android:layout_width="0.0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawablePadding="5.0dp"
            android:drawableTop="@drawable/wechat"
            android:gravity="center_horizontal"
            android:text="微信" />

        <TextView
            android:id="@+id/tv_share_moments"
            android:layout_width="0.0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:drawablePadding="5.0dp"
            android:drawableTop="@drawable/moments"
            android:gravity="center_horizontal"
            android:text="朋友圈" />
    </LinearLayout>

    <TextView
        android:id="@+id/tv_cancel_share"
        android:layout_width="match_parent"
        android:layout_height="48.0dp"
        android:layout_marginTop="10.0dp"
        android:background="@android:color/white"
        android:gravity="center"
        android:text="取消"
        android:textSize="16.0sp"
        android:textStyle="bold" />

</LinearLayout>

// 不带style的构建的dialog宽度无法铺满屏幕
使用 Dialog dialog = new Dialog(getActivity());

效果:

dialogfragment

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值