Customization Bottom Sheet Dialog's View

前端 未结 2 534
花落未央
花落未央 2021-02-09 23:21

I just want to get the bottom sheet dialog like below_: margin from the system window. How can I get like this?

相关标签:
2条回答
  • 2021-02-10 00:05

    You can create Bottom Sheet Dialog Fragment in following way:

    First create the xml file as below named as

    fragment_bottomsheet

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/transparent"
        android:orientation="vertical">
    
        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="@dimen/_150sdp"
            android:layout_margin="@dimen/_20sdp"
            android:background="@drawable/round_corner_white3"
            android:orientation="vertical">
    
            <TextView
                android:id="@+id/tv_select_address"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:textColor="@color/white"
                android:background="@drawable/round_corner_gray"
                android:layout_margin="@dimen/_10sdp"
                android:layout_alignParentBottom="true"
                android:paddingBottom="@dimen/_10sdp"
                android:paddingTop="@dimen/_10sdp"
                android:text="Select Address" />
    
        </RelativeLayout>
    
    </RelativeLayout>
    

    Now create a Bottom Sheet Fragment named as

    BottomSheetFragment

    import android.app.Dialog;
    import android.os.Bundle;
    import android.support.annotation.Nullable;
    import android.support.design.widget.BottomSheetDialogFragment;
    import android.view.View;
    
    public class BottomSheetFragment extends BottomSheetDialogFragment {
    
        public static BottomSheetFragment newInstance() {
            BottomSheetFragment fragment = new BottomSheetFragment();
            return fragment;
        }
    
        @Override
        public void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
        }
    
        @Override
        public void setupDialog(Dialog dialog, int style) {
            View contentView = View.inflate(getContext(), R.layout.fragment_bottomsheet, null);
            dialog.setContentView(contentView);
            ((View) contentView.getParent()).setBackgroundColor(getResources().getColor(android.R.color.transparent));
        }
    
    }
    

    To call that bottom sheet fragment you can write as below:

    BottomSheetFragment bottomSheetDialog = BottomSheetFragment.newInstance();
    bottomSheetDialog.show(getSupportFragmentManager(), "Bottom Sheet Dialog Fragment");
    

    I have only took a single textview for now and attaching the screenshot because your main concern is to get margin in bottomsheet. Also in this way you can customize bottom sheet as you want. Thanks!

    0 讨论(0)
  • 2021-02-10 00:08

    Add Dependency

    implementation 'com.baoyz.actionsheet:library:1.1.7'
    

    Add this code in Activity

    public void ButtonActionSheet() {
    
        ActionSheet.createBuilder(this, getSupportFragmentManager())
                .setCancelButtonTitle("Cancel")
                .setOtherButtonTitles("item1", "item2")
                .setCancelableOnTouchOutside(true)
                .setListener(new ActionSheet.ActionSheetListener() {
                    @Override
                    public void onDismiss(ActionSheet actionSheet, boolean isCancel) {
    
                    }
    
                    @Override
                    public void onOtherButtonClick(ActionSheet actionSheet, int index) {
    
                        if (index == 0) {
    
                            myMethod();
    
                        } else if (index == 1) {
    
                            myMethod2();
                        }
                    }
    
    
                })
                .show();
    
    
    
    
    }
    

    Add this line in style.xml

     <item name="actionSheetStyle">@style/ActionSheetStyleiOS7</item>
    
    0 讨论(0)
提交回复
热议问题