BottomSheetDialog 高度

我用BottomSheetDialog显示一个这样的弹框,默认的BottomSheetDialog没有这么高,要上拉才能显示完全。

package com.ufs.cheftalk.dialog;import android.content.Context;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.FrameLayout;import androidx.annotation.NonNull;import androidx.recyclerview.widget.LinearLayoutManager;import androidx.recyclerview.widget.RecyclerView;import com.aliyun.svideo.common.utils.ScreenUtils;import com.google.android.material.bottomsheet.BottomSheetBehavior;import com.google.android.material.bottomsheet.BottomSheetDialog;import com.ufs.cheftalk.R;import com.ufs.cheftalk.util.Logger;import com.ufs.cheftalk.util.ZR;import com.ufs.cheftalk.util.ZToast;import com.ufs.cheftalk.viewholder.ImageViewHolder;import java.util.HashMap;import java.util.List;import butterknife.BindView;import butterknife.ButterKnife;import cn.jiguang.share.android.api.JShareInterface;import cn.jiguang.share.android.api.PlatActionListener;import cn.jiguang.share.android.api.Platform;import cn.jiguang.share.android.api.ShareParams;import cn.jiguang.share.qqmodel.QQ;import cn.jiguang.share.qqmodel.QZone;import cn.jiguang.share.wechat.Wechat;import cn.jiguang.share.wechat.WechatMoments;public class ChooseServerStatusDialog extends BottomSheetDialog implements View.OnClickListener { @BindView(R.id.download) public View download; public String qrcode; @BindView(R.id.we_share) View weShare; @BindView(R.id.we_moments) View weMoments; View view; int peekHeight = 0; public ChooseServerStatusDialog(Context c, List reasons) { super(c); View contentView = LayoutInflater.from(getContext()).inflate(R.layout.dialog_content, null); View first = contentView.findViewById(R.id.first_child); setContentView(contentView); ButterKnife.bind(this); weShare.setOnClickListener(this); weMoments.setOnClickListener(this); download.setOnClickListener(this); try { // hack bg color of the BottomSheetDialog ViewGroup parent = (ViewGroup) contentView.getParent(); parent.setBackgroundResource(android.R.color.transparent); } catch (Exception e) { e.printStackTrace(); } RecyclerView recyclerView = contentView.findViewById(R.id.recycler_view); LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext()); linearLayoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); recyclerView.setLayoutManager(linearLayoutManager); final int[] selected = {0}; recyclerView.setAdapter(new RecyclerView.Adapter() { @NonNull @Override public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { // create a new view View view = LayoutInflater.from(parent.getContext()).inflate(viewType == 0 ? R.layout.image_viewholder : R.layout.image_viewholder2, parent, false); return new ImageViewHolder(view); } @Override public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) { if (position == selected[0]) { view = holder.root_view; holder.selected.setImageResource(R.mipmap.shareinvite3); } else { holder.selected.setImageResource(0); } holder.root_view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { selected[0] = position; notifyDataSetChanged(); } }); ZR.setImageView(holder.qrcode_view, qrcode); ZR.setImageViewWithRoundCorder(holder.image_view, "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1590396824311&di=8399db85730be2c86ba32c067f749205&imgtype=0&src=http%3A%2F%2Fpic67.nipic.com%2Ffile%2F20150421%2F7487939_214351415000_2.jpg"); } @Override public int getItemCount() { return 3; } @Override public int getItemViewType(int position) { if (position == 0) return 1; return 0; } }); } @Override public void show() { super.show(); if (peekHeight == 0){ View container = findViewById(R.id.first_child); container.measure(0,0); peekHeight = container.getMeasuredHeight(); FrameLayout bottomSheet = (FrameLayout)findViewById(R.id.design_bottom_sheet); BottomSheetBehavior behavior = BottomSheetBehavior.from(bottomSheet); behavior.setPeekHeight(peekHeight); } } @Override public void onClick(View view) { int id = view.getId(); switch (id) { case R.id.we_share: { onShare(1); break; } case R.id.we_moments: { onShare(2); break; } case R.id.download: { ZToast.toast("正在保存图片"); ZR.saveBmp2Gallery(getContext(), ZR.getBitmapFromView(view), "dd"); ZToast.toast("图片已经保存到相册"); break; } } dismiss(); } void onShare(int position) { String platForm = Wechat.Name; switch (position) { case 1: { platForm = Wechat.Name; break; } case 2: { platForm = WechatMoments.Name; break; } case 3: { platForm = QQ.Name; break; } case 4: { platForm = QZone.Name; break; } } ShareParams shareParams = new ShareParams(); shareParams.setShareType(Platform.SHARE_IMAGE); shareParams.setImagePath(ZR.generateFile(ZR.getBitmapFromView(view)).getAbsolutePath()); JShareInterface.share(platForm, shareParams, new PlatActionListener() { @Override public void onComplete(Platform platform, int i, HashMap hashMap) { } @Override public void onError(Platform platform, int action, int errorCode, Throwable error) { Logger.d("share onError"); } @Override public void onCancel(Platform platform, int i) { Logger.d("share onCancel"); } }); } public interface OnSelectConfirm { void onItemSeletec(int selectedPosition, String name); }}


加下面一块代码就好了这个

效果图

你可能感兴趣的:(BottomSheetDialog 高度)