【问题标题】:Customization Bottom Sheet Dialog's View自定义底页对话框的视图
【发布时间】:2019-03-18 09:56:21
【问题描述】:

我只想得到BottomSheetDialog,如下所示:系统窗口的边距。我怎么会变成这样?

【问题讨论】:

    标签: android android-layout android-bottomsheetdialog


    【解决方案1】:

    您可以通过以下方式创建底部工作表对话框片段:

    首先创建xml文件如下命名为

    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>
    

    现在创建一个名为

    的底部工作表片段

    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));
        }
    
    }
    

    要调用该底部工作表片段,您可以编写如下:

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

    我现在只使用了一个文本视图并附上了屏幕截图,因为您主要关心的是在底页中获得边距。同样通过这种方式,您可以根据需要自定义底页。谢谢!

    【讨论】:

    • 最好覆盖 onCreateView(...){return inflater.inflate(R.layout.dlg_layout, null)} 而不是 setupDialog
    【解决方案2】:

    添加依赖

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

    在 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();
    
    
    
    
    }
    

    在 style.xml 中添加这一行

     <item name="actionSheetStyle">@style/ActionSheetStyleiOS7</item>
    

    【讨论】:

      猜你喜欢
      • 2019-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-23
      • 2011-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多