Android:Intellij 按钮导航模板创建未使用的空间,隐藏其下的节点

Posted

技术标签:

【中文标题】Android:Intellij 按钮导航模板创建未使用的空间,隐藏其下的节点【英文标题】:Android: Intellij Buttom nav template creates unused space, hides nodes under it 【发布时间】:2021-10-18 09:37:40 【问题描述】:

我在 Intellij 中使用按钮导航模板创建了一个 android 项目。 我不能在顶部使用某个空间(见截图),它与按钮导航栏的大小相关,即使约束似乎是正确的。 它还隐藏/转换放置在它下面的元素,实际上还有一个 TextView 和一个微调器。

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools" android:id="@+id/container"
        android:layout_
        android:layout_
        android:paddingTop="?attr/actionBarSize">

    <com.google.android.material.bottomnavigation.BottomNavigationView
            android:id="@+id/nav_view"
            android:layout_
            android:layout_
            android:layout_marginStart="0dp"
            android:layout_marginEnd="0dp"
            android:background="?android:attr/windowBackground"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:menu="@menu/bottom_nav_menu"/>

    <fragment
            android:id="@+id/nav_host_fragment_activity_main"
            android:name="androidx.navigation.fragment.NavHostFragment"
            android:layout_
            android:layout_
            app:defaultNavHost="true"
            app:navGraph="@navigation/mobile_navigation"
            android:scrollbars="vertical" app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintBottom_toTopOf="@+id/nav_view" android:layout_marginBottom="40dp"
            android:paddingBottom="40dp"/>

</androidx.constraintlayout.widget.ConstraintLayout>

【问题讨论】:

【参考方案1】:

您必须将片段高度从wrap_content 删除到0dpmatch_constraint (match_parent)

match_constraint or 0dp :视图尽可能扩展以满足每一侧的约束(在考虑到视图的边距之后)。

Chain:链是一组通过双向位置约束相互链接的视图。链中的视图可以垂直或水平分布。对于您的情况,我们需要垂直链。见video

最后我从你那里删除android:paddingTop="?attr/actionBarSize" ConstraintLayout

试试下面的代码:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/container"
android:layout_
android:layout_>


<fragment
    android:id="@+id/nav_host_fragment_activity_main"
    android:layout_
    android:layout_
    android:scrollbars="vertical"
    app:defaultNavHost="true"
    android:name="androidx.navigation.fragment.NavHostFragment"
    app:layout_constraintBottom_toTopOf="@+id/nav_view"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.5"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:navGraph="@navigation/mobile_navigation" />
<com.google.android.material.bottomnavigation.BottomNavigationView
    android:id="@+id/nav_view"
    android:layout_
    android:layout_
    android:background="?android:attr/windowBackground"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@+id/nav_host_fragment_activity_main"
    app:menu="@menu/bottom_nav_menu"/>

</androidx.constraintlayout.widget.ConstraintLayout>

【讨论】:

Oweee 这个答案有效!您能否解释一下您做了什么以及我的缺陷是什么,以便我可以将您的答案标记为正确? @pikkuez 你只需要使用 0dp (match_constraint like match_parent ) 作为片段高度。我将垂直链分配给fragmentBottomNavigation 就是这样。请查看更新后的答案并附上解释。【参考方案2】:

删除

android:paddingTop="?attr/actionBarSize"

来自您的根 ConstraintLayout。

【讨论】:

以上是关于Android:Intellij 按钮导航模板创建未使用的空间,隐藏其下的节点的主要内容,如果未能解决你的问题,请参考以下文章

如何在android中以编程方式在片段之间导航?

如何在 Android Studio / JetBrains IntelliJ IDEA 中编辑模板?

带有圆形按钮的Android底部导航

Android如何使用工具栏中的按钮切换以使用片段打开/关闭导航抽屉

后退按钮关闭应用程序而不是转到上一个片段 android 导航组件

IntelliJ Idea13无法创建maven模板