我只想得到BottomSheetDialog
如下信息:系统窗口的边距。我怎么会变成这样?
问问题
13142 次
2 回答
20
您可以通过以下方式创建底页对话框片段:
首先创建如下命名的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");
我现在只使用了一个文本视图并附上了屏幕截图,因为您主要关心的是在底页中获得边距。同样通过这种方式,您可以根据需要自定义底页。谢谢!
于 2019-03-18T10:58:08.613 回答
-3
添加依赖
implementation 'com.baoyz.actionsheet:library:1.1.7'
在活动中添加此代码
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-03-21T11:52:12.463 回答