导航抽屉显示在我活动的视图下

问题描述 投票:-1回答:1

正在尝试实施正确的导航抽屉。在底部导航菜单中单击菜单项时,导航栏将打开。而且一切正常。但是导航抽屉正在主要活动的小部件下面打开。谁能帮我这是我的代码。

activity_main.xml

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/button"
        android:layout_width="176dp"
        android:layout_height="66dp"
        android:text="Show maps"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.497"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.499" />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navi"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:background="#fff"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="1.0"
        app:menu="@menu/bottom_navigation"/>

    <androidx.drawerlayout.widget.DrawerLayout
        android:id="@+id/drawerlayout"
        android:layout_width="270dp"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="@+id/bottom_navi"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="@+id/button"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0">

        <com.google.android.material.navigation.NavigationView
            android:id="@+id/sidenavi"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="end"
            android:fitsSystemWindows="true"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="1.0"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.022"
            app:menu="@menu/bottom_navigation" />
    </androidx.drawerlayout.widget.DrawerLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

MainActivity.kt

 @RequiresApi(Build.VERSION_CODES.M)
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        button = findViewById<Button>(R.id.button)
        button.setOnClickListener{
           OpenMap()
       }

        val bottomNavigation : BottomNavigationView = findViewById(R.id.bottom_navi)
        bottomNavigation.setOnNavigationItemSelectedListener (mOnNavigationItemSelectedListener)

        var navigationView : NavigationView = findViewById(R.id.sidenavi) as NavigationView
        navigationView.setNavigationItemSelectedListener (this)

    }
    @RequiresApi(Build.VERSION_CODES.M)
    fun OpenMap() {
         val intent = Intent(this, MapsActivity::class.java)
                startActivity(intent)
    }

    private  val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
        when (item.itemId){
            R.id.faq-> {

                return@OnNavigationItemSelectedListener true
            }
            R.id.membership -> {

                return@OnNavigationItemSelectedListener true
            }
            R.id.preview -> {

                return@OnNavigationItemSelectedListener true
            }
            R.id.about -> {

                return@OnNavigationItemSelectedListener true
            }
            R.id.menu-> {
                var drawer : DrawerLayout = findViewById(R.id.drawerlayout) as DrawerLayout
                if(drawer.isDrawerOpen(GravityCompat.END)){
                    drawer.closeDrawer(GravityCompat.END)
                }else{
                    drawer.openDrawer(GravityCompat.END)
                }
            }
        }
        false
    }

    override fun onNavigationItemSelected(item: MenuItem): Boolean {
        return true
    }


}

enter image description here

android navigation-drawer
1个回答
0
投票

将您的根目录布局设为

androidx.drawerlayout.widget.DrawerLayout

它将解决您的问题

<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout
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/drawerlayout"
    android:layout_width="270dp"
    android:layout_height="match_parent"
    tools:context=".MainActivity">


<androidx.constraintlayout.widget.ConstraintLayout
     android:layout_width="match_parent"
    android:layout_height="match_parent">


    <Button
        android:id="@+id/button"
        android:layout_width="176dp"
        android:layout_height="66dp"
        android:text="Show maps"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.497"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.499" />

    <com.google.android.material.bottomnavigation.BottomNavigationView
        android:id="@+id/bottom_navi"
        android:layout_width="match_parent"
        android:layout_height="60dp"
        android:background="#fff"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="1.0"
        app:menu="@menu/bottom_navigation"/>


</androidx.constraintlayout.widget.ConstraintLayout>


<com.google.android.material.navigation.NavigationView
            android:id="@+id/sidenavi"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_gravity="end"
            android:fitsSystemWindows="true"
            app:menu="@menu/bottom_navigation" />

</androidx.drawerlayout.widget.DrawerLayout>
© www.soinside.com 2019 - 2024. All rights reserved.