【问题标题】:Navigation View Menu Item Doesn't respond to any Click导航视图菜单项不响应任何点击
【发布时间】:2020-10-07 17:42:06
【问题描述】:

我想知道我的代码有什么问题,因为我点击菜单项没有任何响应

class Main : AppCompatActivity() , NavigationView.OnNavigationItemSelectedListener {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)


        setSupportActionBar(mainToolbar)

        supportActionBar?.title = ""
        val toolbarToggle = ActionBarDrawerToggle(this,DrawerLayout,mainToolbar,R.string.drawer_open,R.string.drawer_close)
        DrawerLayout.addDrawerListener(toolbarToggle)
        toolbarToggle.syncState()

        mainNavigView.setNavigationItemSelectedListener(this)

    }

    override fun onNavigationItemSelected(item: MenuItem): Boolean {
        var titleT = item.title
        Toast.makeText(this,titleT, Toast.LENGTH_LONG).show()
        return true
    }

}

这是导航和抽屉的xml代码


<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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/DrawerLayout"
    android:background="@color/spark_bg"
    tools:context=".Main">

    <com.google.android.material.navigation.NavigationView
        android:id="@+id/mainNavigView"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:headerLayout="@layout/navigationheader"
        app:menu="@menu/navigationmenu"
         />

这是菜单项代码,其中包含我要按的项目的 ID

<menu xmlns:android="http://schemas.android.com/apk/res/android">
            <item
                android:id="@+id/myOrdersMI"
                android:icon="@drawable/ic_list"
                android:title="My Orders"
                />

</menu>

【问题讨论】:

  • 发布您的布局
  • @GabrieleMariotti 完成

标签: android kotlin navigation-drawer menuitem navigationview


【解决方案1】:

要使用DrawerLayout,请将您的主要内容视图定位为宽度和高度为match_parent 而没有&lt;layout_gravity&gt; 的第一个子视图

    <androidx.drawerlayout.widget.DrawerLayout
       ...>

        <!-- main content goes here -->

        <!-- NavigationView -->
        <com.google.android.material.navigation.NavigationView
            android:layout_gravity="start|left"
            ../>

    </androidx.drawerlayout.widget.DrawerLayout>

【讨论】:

  • 它可以工作,但是当我删除 layout_gravity 时,它覆盖了主要的活动组件
  • @AhmadAl-Maghrabi 您在哪个视图中删除了 layout_gravity?
  • 我从导航视图中删除了 layout_gravity 我没有在抽屉布局视图中使用它
  • @AhmadAl-Maghrabi 对不起我的错。答案不清楚。不要从 NavigationView 中删除 android:layout_gravity(检查更新的答案),而是从第一个子项(主要内容)中删除。
  • 它不存在于主要内容中
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
相关资源
最近更新 更多