demo下载:
自定义dialogfragment 底部弹出框 实现分享效果 - 下载频道 - CSDN.NET
http://download.csdn.net/detail/baidu_31093133/9853004
效果图:
代码:
自定义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());
效果: