我想制作一个仅在布局中包含标题的抽象BottomSheetDialogFragment,然后在其子类中动态添加自定义内容布局。但是,当我运行该程序时,它仅显示标题。
public abstract class BaseBottomSheetDialog extends BottomSheetDialogFragment {
@BindView(R.id.tvTitle)
TextView tvTitle;
@BindView(R.id.vgRoot)
LinearLayout vgRoot;
public abstract String getTittle();
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
BottomSheetDialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);
dialog.setOnShowListener(dialog1 -> {
BottomSheetDialog d = (BottomSheetDialog) dialog1;
FrameLayout bottomSheet = d.findViewById(com.google.android.material.R.id.design_bottom_sheet);
BottomSheetBehavior.from(bottomSheet).setState(BottomSheetBehavior.STATE_EXPANDED);
});
return dialog;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_bottom_sheet, container, false);
ButterKnife.bind(this, view);
setContentViews();
return view;
}
public void setContentViews() {
tvTitle.setText(getTittle());
View content = LayoutInflater.from(getActivity()).inflate(R.layout.child_layout, vgRoot, false);
vgRoot.addView(content);
vgRoot.invalidate();
}
}
fragment_bottom_sheet.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/vgRoot"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tvTitle" />
</LinearLayout>
child_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout>
<!--child items-->
</LinearLayout>
任何帮助,将不胜感激。
最佳答案
尝试在片段的onActvitiyCreated()方法中调用setContentViews()方法。
关于android - 动态地将 View 组添加到BottomSheetDialogFragment不会显示任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58315064/