Я хотел создать абстрактный 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();
}
}
frag_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>
Любая помощь будет оценена.