android - 动态地将 View 组添加到BottomSheetDialogFragment不会显示任何内容

标签 android android-layout bottom-sheet

我想制作一个仅在布局中包含标题的抽象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/

相关文章:

android - bindservice 总是返回 false

android - 在 android 中使用其他 View 在屏幕上绘图

android - 约束布局中的网格

android - Recyclerview ViewHolder : onCreateViewHolder , View 绑定(bind)和onBindViewHolder在同一个类中

android - 在 `ListView` 中,为什么禁用 `animationCache` 和 `scrollingCache` 会减少滚动滞后?

Android ImageView 不总是显示图片

android - 如何从 Material Design 文档中实现持久性 Bottom Sheets

android - BottomSheet 与 RecyclerView 和其他 View

android - 谷歌地图触摸 Bottom Sheet 对话框

android - 将安卓摄像头的实时视频广播流式传输到服务器