首页 > 解决方案 > 自定义 NavHostFragment 用 viewgoup 替换 framelayout

问题描述

FrameLayout布局中有一些视图和一个视图。我想自定义NavHostFragment替换FrameLayoutRelativeLayout,它可以工作,但视图层次结构是错误的。ImageView 应该在顶部,但它在底部。

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@id/lb_nav_host_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/logo" />
</RelativeLayout>

和我的习惯NavHostFragment

public abstract class BaseModuleFragment extends NavHostFragment {

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = null;
        if (getContentViewId() > 0) {
            view = inflater.inflate(getContentViewId(), container, false);
            View frameLayout = view.findViewById(R.id.lb_nav_host_container);
            if (!(frameLayout instanceof FrameLayout)) {
                throw new RuntimeException("frame layout must exist");
            }
            frameLayout.setId(getId());
        } else {
            view = super.onCreateView(inflater, container, savedInstanceState);
        }
        return view;
    }
}

方法不对,或者如何解决?

标签: androidnavigation

解决方案



推荐阅读