首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我的侧边栏导航按钮不能移动

在Android应用开发中,如果你的侧边栏导航按钮(通常是指Navigation Drawer中的菜单项)不能移动,可能是由于以下几个常见问题导致的:

  1. 布局文件问题:确保你的布局文件正确配置了Navigation Drawer和相关的组件。
  2. 代码实现问题:确保你在代码中正确初始化和设置了Navigation Drawer。
  3. 事件处理问题:确保你正确处理了Navigation Drawer的打开和关闭事件。

以下是一些详细的检查步骤和示例代码,帮助你排查和解决问题。

1. 检查布局文件

确保你的布局文件(通常是activity_main.xml)正确配置了DrawerLayout和NavigationView。

代码语言:javascript
复制
<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/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <!-- 主内容布局 -->
    <FrameLayout
        android:id="@+id/content_frame"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

    <!-- 侧边栏导航视图 -->
    <com.google.android.material.navigation.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        app:menu="@menu/drawer_menu" />

</androidx.drawerlayout.widget.DrawerLayout>

2. 检查菜单文件

确保你的菜单文件(例如drawer_menu.xml)正确配置了菜单项。

代码语言:javascript
复制
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/nav_home"
        android:icon="@drawable/ic_home"
        android:title="Home" />
    <item
        android:id="@+id/nav_gallery"
        android:icon="@drawable/ic_gallery"
        android:title="Gallery" />
    <item
        android:id="@+id/nav_slideshow"
        android:icon="@drawable/ic_slideshow"
        android:title="Slideshow" />
</menu>

3. 初始化和设置Navigation Drawer

在你的活动中(例如MainActivity.java),确保你正确初始化和设置了Navigation Drawer。

代码语言:javascript
复制
import android.os.Bundle;
import android.view.MenuItem;
import androidx.annotation.NonNull;
import androidx.appcompat.app.ActionBarDrawerToggle;
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
import androidx.core.view.GravityCompat;
import androidx.drawerlayout.widget.DrawerLayout;
import com.google.android.material.navigation.NavigationView;

public class MainActivity extends AppCompatActivity
        implements NavigationView.OnNavigationItemSelectedListener {

    private DrawerLayout drawer;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Toolbar toolbar = findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        drawer = findViewById(R.id.drawer_layout);
        NavigationView navigationView = findViewById(R.id.nav_view);
        navigationView.setNavigationItemSelectedListener(this);

        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar,
                R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        drawer.addDrawerListener(toggle);
        toggle.syncState();

        if (savedInstanceState == null) {
            getSupportFragmentManager().beginTransaction().replace(R.id.content_frame,
                    new HomeFragment()).commit();
            navigationView.setCheckedItem(R.id.nav_home);
        }
    }

    @Override
    public void onBackPressed() {
        if (drawer.isDrawerOpen(GravityCompat.START)) {
            drawer.closeDrawer(GravityCompat.START);
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem item) {
        switch (item.getItemId()) {
            case R.id.nav_home:
                getSupportFragmentManager().beginTransaction().replace(R.id.content_frame,
                        new HomeFragment()).commit();
                break;
            case R.id.nav_gallery:
                getSupportFragmentManager().beginTransaction().replace(R.id.content_frame,
                        new GalleryFragment()).commit();
                break;
            case R.id.nav_slideshow:
                getSupportFragmentManager().beginTransaction().replace(R.id.content_frame,
                        new SlideshowFragment()).commit();
                break;
        }

        drawer.closeDrawer(GravityCompat.START);
        return true;
    }
}
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

侧边导航(移动端商品--评论--详情)随楼层滑动高亮显示

当时也这么认为,于是就自己仿着做了一个(当时自己认为),其实就是照个抄了一遍,加了一点自己需要功能(例如:随机雪花颜色),然后就认为这是自己,在jquery插件网站去发布,结果被拒绝了,当时很失望但是没有找自己原因...(因为那是抄),后来也写了一些轮播,导航点击页面滑动等(自己认为插件),后来发现可复用性很差,没有起到插件作用。...对象,以及该楼层滑动到窗口某位置导航高亮TOP值,点击导航页面对应楼层滑动到窗口某位置TOP值'函数 function getItem(_list,newOptions){ _list.each....offset().top + newOptions.scrollTop; data.push(item); }); } # 3.建立'滚动监听函数,同时激活侧边导航高亮显示...list.removeClass(newOptions.activeClass).eq(i).addClass(newOptions.activeClass); } }); } # 4.建立'点击激活侧边导航高亮显示

2.7K20
  • 教你制作可移动导航

    目前可移动导航非常常见,以网易、京东、淘宝为首,都用到了此类导航,即可以左右滑动,选择更多。...见下图紫色圈内 网易新闻客户端 本文将会介绍这类导航做法,方法很多,但关键思路是一样,希望给大家带来帮助 一、最顶滚动条 上面可移动那个条,我们会想到带有滚动功能控件,无非就是UITableView...、UICollectionView、UIScrollView,在此,我们优先选择scrollView,至于那一个个栏目,思路是UIButton即可。...这也是本文重点:根据选中栏目(按钮),分别为topScroll设置不同ContentOffset,主要有三种情况:一、选中栏目是前几个 二、选中栏目时后几个 三、选中其他栏目 前两种情况没办法偏移到界面中间.../**选择某个项目*/ func selectButton(index:NSInteger){ //把当前按钮重置为原来颜色 self.selectButton?.

    1.6K60

    移动端网页布局】流式布局案例 ⑥ ( 多排按钮导航 | 设置浮动及宽度 | 设置图片样式 | 设置文本 )

    一、多排按钮导航样式及核心要点 1、实现效果 要实现下面的导航效果 ; 2、总体布局设计 该导航可使用 10 个 标签盒子 进行制作 ; 该导航宽度自动充满整个屏幕 , 宽度为..., 宁可少 1 像素 , 也不能多 1 像素 , 如果设置浮动后 , 宽度超过了布局宽度 , 则会自动换行 ; 3、设置浮动及宽度 该布局距离上面的布局有 5 像素上外边距 ; 如果要令 10 个坐标...文本 span 样式为 : nav a span { /* 导航文本 设置为 块级元素 */ display: block; } 二、完整代码实例 ---- 1、HTML 标签结构...: 33.33%; } .brand div img { /* 设置图片链接中图片 在水平方向上充满父容器即可 */ width: 100%; } /* 多排按钮导航 */...图片宽度为 40 像素 高度自适应 */ width: 40px; /* 上下 10 像素外边距 */ margin: 10px 0; } nav a span { /* 导航文本

    3.3K40

    最新iOS设计规范三|3大界面要素:(Bars)

    (Bars) ,可以告诉用户在APP中当前在所在位置、能提供导航,还可能包含用于触发操作和传递信息按钮或其他元素。包括6种:导航、搜索侧边、状态、标签、工具。...如果导航包含多个文本按钮,需要通过在按钮之间插入固定空格项目来增加分隔。以此来避免按钮文本同时显示造成按钮无法区分问题。 考虑在导航中使用分段控件,使APP层次结构更加扁平。...三、侧边(Sidbars) 侧边在iPhone上使用较少,更多用在iPad。它提供了应用程序导航,在侧边中选择一项可以使人们导航到特定内容。例如,“邮件”中显示所有邮箱列表。...由于侧边为您应用程序提供导航,因此可以使用它来提供快捷方式,使用户可以快速访问他们关心内容。最好由用户决定哪些项目最重要。 不要阻止用户隐藏侧边。...四、状态(Status Bars) 状态出现在屏幕上边缘,并显示有关设备当前状态有用信息,例如时间,移动电话和电池电量。状态中显示实际信息取决于设备和系统配置。 使用系统提供状态

    9.9K10

    Django搭建博客(二):博客布局

    上面的图片就是博客未来布局简图了,现在来好好讲一讲这个布局 这个布局借鉴了关注许多博客,不过也加了一些自己想法进去 首先就是第一行导航了,但我这个并不是导航 因为博客里计划只放文章,...不需要太多功能,所以我把导航改成了标题 黄色方框里是博客名字,也相当于是一个 logo吧,绿色部分计划每小时随机显示一条名言(或者鸡汤?)...下面分为两列,左边一列用来显示文章列表 右边一列作为侧边,用来显示头像、简介、文章分类、外链之类内容 文章列表计划做个响应式布局,在 PC端就像上面的图片显示那样 每篇文章作为一卡片,封面图交叉显示...而在移动端,侧边会隐藏(可以考虑做成一个汉堡菜单,或者悬浮按钮菜单之类),整个页面变成只有一列显示,如下图: ? 但是标题好像看着有点突兀,干脆去掉好了 ?...去掉标题之后瞬间清爽简洁了很多有么有 这里对原来页面做了一些小改动,原来在移动端里靠边显示封面图居上显示,并且标题也移动到封面图最下沿,然后再是文章信息和摘要。

    1.2K20

    iOS好用第三方侧边控件——MMDrawerController

    iOS好用第三方侧边控件——MMDrawerController 一、引言         很多应用程序都采用了侧边这样界面结构,MMDrawerController是一个轻量级侧边抽屉控件...,其支持左侧抽屉和右侧抽屉,可以很好支持导航控制器,并且支持开发者对手势和动画进行自定义。...点击导航时可以关闭侧边 MMCloseDrawerGestureModeTapNavigationBar = 1 << 4, //点击中心视图控制器视图时可以关闭侧边...,这个类可以创建三道杠菜单按钮。...2.同时展示左边与又边。 3.无法设置显示一个最小抽屉宽度。 4.不能支持UITabBarController容器。 5.不能在中心视图控制器之上呈现侧边视图。

    2.8K20

    Material Design — 底部导航(Bottom Navigation)

    点击底部导航图标可以:1、直接将你带到相关页面;2、刷新当前页面。 底部导航主要用于移动端,为了在pc端实现类似效果,可以使用侧边导航。...更大显示器,如pc端,可以通过使用侧边导航实现类似的效果。例如,紧凑“rail”处理处理方式默认展示导航图标。 ? 左:移动端    右:pc端 什么时候用?...---- 行为(这部分动图去MD网站看吧...) 底部导航可以从一个主题中n级页面移动到另一个主题一级页面。当用户去往下级页面时要保持底部导航可用,可通过持续展示,或者通过滚动隐藏和显示。...底部导航不应用于: ·专注于单一任务观点,如电子邮件“撰写”页面。 ·包含用户首选项或设置页面 在Android上,后退按钮不在底部导航视图之间导航。...底部导航icon 点击底部导航icon将直接带你到相关页面,或刷新当前页面。每个icon必须指向目的地,并且不能打开菜单或对话框。

    4.1K90

    导航还是侧?flutter 跨平台适配指南

    作用: 侧通常位于屏幕侧边(通常是左侧),用于显示应用导航菜单、设置选项或其他重要功能。它提供了一种便捷方式,让用户可以轻松地浏览和访问应用中不同内容。...了解不同平台用户体验 Android 平台导航和侧 导航: 在 Android 平台上,导航通常位于屏幕顶部,用于显示应用标题和操作按钮。...Android 应用导航通常采用 Material Design 设计风格,具有醒目的颜色和平面化图标。 用户通常期望在导航中找到应用标题和返回按钮,以及其他与当前页面相关操作按钮。...简洁界面:导航通常只显示标题和少量操作按钮,可以保持界面的简洁性,适合于功能较少应用。 劣势: 空间有限:导航空间有限,不能同时显示过多功能或选项。...移动端使用:在大屏幕设备上,如平板电脑和桌面电脑,侧可以提供更好用户体验,但在小屏幕移动设备上(如手机),需慎重考虑。

    26310

    Flutter 可折叠边

    一个可在Flutter应用中创建可折叠侧边导航抽屉 Flutter 插件。...**我们将实现一个可折叠侧边演示程序,并在flutter应用程序中使用foldable_sidebar包创建一个可折叠侧边导航抽屉。...Flutter导航侧边抽屉。...利用Material Design移动应用程序有两个必不可少导航选择。这些导航是“选项卡和抽屉”。抽屉是选项卡一种可选选择,因为有时移动应用程序没有足够空间来帮助选项卡。 抽屉是不可见侧屏。...它显示了在flutter应用程序中使用foldable_sidebar包可折叠侧边将如何工作。它显示了当用户点击浮动操作按钮时,抽屉将以折叠方式显示/隐藏。它会显示在您设备上。

    6.4K50

    Atom 在 linux 下安装有几率侧边默认显示在右侧,移动到左侧设置方法

    Atom 在 linux 下安装有几率侧边默认显示在右侧,移动到左侧设置方法 遇到一个奇葩事情。没有macbook了。...及其讨厌windows,于是给新来前端一台笔记本,安装上了archlinux系统。在安装好atom编辑器之后,发现,侧边显示在右侧,恶心坏了。 通过一番摸索,终于找到了设置选项。...如下: 打开 设置 → Packages → 一直往下翻,找到 tree-view → 点击 setting 或 设置 → 去掉Show On Right Side 勾选,然后就立即生效了。...在中文网络上应该是第一个解决这个问题。除了archlinux ,在 ubuntu 上应该也有几率出现。不知道什么原因。 版权申明:本文由FungLeo原创,允许转载,但转载必须附注首发链接。谢谢。

    1.4K20

    Joe主题再续前缘版 - 本站同款

    ” 中 不显示错误 修复移动侧边图片封面右边多出白色边框 修复友链页面站点介绍过多导致卡片高度不一BUG 修复自定义多级分类情况下网站地图生成url显示不正确bug,暂时只支持2级分类 新增视频可设置自动播放...移动端情况下侧边头像优化为圆形 新增移动端可设置侧边壁纸显示模式为半屏或全屏 新增可自定义侧边登录注册URL函数 优化移动端当页面已经往下滑动之后点击分类等栏目不会返回顶部 文章收录检测失败后改为手动提交收录...新增如果主题没有配置邮箱那么用户注册时则无需验证码 1.12 优化打开文章导读目录后背景层模糊效果 优化移动侧边功能模块背景为85%白色透明效果 可配合壁纸高度功能使用全屏壁纸 新增可开启或关闭...优化移动端下导航处搜索框样式 导航高度降低10px 可自定义首页热门文章显示数量 首页热门文章UI全新重构 1.18 2022-09-06 08:11:09 星期二 紧急修复主题设置页面报错提示...需要用请使用主题内自定义js代码设置引入 还原移动侧边和搜索动画,移除毛玻璃效果,因为毛玻璃对页面的性能下拉太严重了 移除控制台页面加载计时,减少臃肿性 新增反QQ用户恶意举报功能 新增可开启关闭反蜘蛛爬虫非法扫描

    3K20

    超好看30款网站侧边设计

    第一部分:为什么需要网站侧边侧边其实就是一种比较经典网站导航设计,它形式通常为竖向一列,展示在网站右侧或者左侧,具体位置当然是取决于整体设计。...但一般来讲,由于视觉习惯和用户行为,侧边栏位于左侧更容易第一时间吸引用户注意力,因而也能很高效地给用户提供导航;而右侧侧边则常被看做是二级导航,因而可以丰富网站结构层次。...Grace chuang Grace chuang是一个作品集单页网站,该网站布局分为三大部分,左侧为带有logo和社交按钮侧边,中心是网站所有者照片展示,右侧是自我介绍。 ? 4....Jasminestar Jasminestar侧边文本设计比较独特,看起来像一个左旋90°顶部导航,并且使用留白突出显示,还提供了关闭按钮,方便用户以自己喜欢方式浏览页面。 ? 7....Charliewaite Charliewaite是由设计师Charlie Waite创建个人网站,他使用了大尺寸侧边,展示了自我介绍、设计按钮以及问候语。 ? 16.

    12.3K10

    移动端也能兼容web页面制作2:导航、背景图片设置

    [ 导读 ] MDBootstrap 是基于 Vue.js 开发一套前端框架,拥有美观大气界面效果,友好交互体验,更棒是对于移动端也有很好兼容性。...先给大家看下演示 demo 运行,后面将围绕项目的制作过程,依次来展示导航、图片轮播图、表格、数据库交互等各方面的详细实现过程。...MDBootstrap 导航、背景图片设置 效果图 第一章:背景图片设置 ① 放置图片 ② 引入图片 ③ 图片蒙层 第二章:导航设置 ① 基础导航添加 ② 下拉菜单 ③ 菜单跳转 第三章:其它 ①...第二章:导航设置 ① 基础导航添加 因为导航一直要存在页面中,所以我设置了将导航添加到 App.vue 里,和 并列在其上面,后面主要内容都会在导航下面进行切换...四岁那年一个夏夜,一向身体棒得像只小老虎,偏偏因热伤风和盗汗引发了高烧,浑身烫得像个火球一般。母亲吓坏了,连忙用自行车载着,拼命往医院赶。 从医院返回时,已经是子夜时分。

    1.4K20

    TAB导航侧边抽屉导航巅峰对决

    设想你需要设计一个含有许多页面和模块,不能在一屏内显示完全应用。你一定会首先想到去设计一个底部或顶部Tab导航。等一下,多出来一排导航看上去有点碍眼?...我们尝试下把他们收到侧边里,或者叫安卓团队给它名字“侧边抽屉导航”。...而后,友好而乐于提供指导Google Play团队建议侧边抽屉式导航(navigation drawers)作为一种新导航方式用于安卓应用。 所以6个月后,我们决定冒险尝试改为侧边导航。...对于侧边使用效果测试,我们采用了15/85方法,即针对15%用户投放了侧边方案,85%用户保持Tab导航方式。...感谢A/B test,让我们在一段时间验证后快速将所有用户切换到了tab导航方案。 如果关于使用侧边还是tab争论也出现在你们团队中,想我们研究经验值得与你们分享。

    2.8K70

    Core + Vue 后台管理基础框架4——前端授权

    1、前言   上篇,我们讲了后端授权。与后端不同,前端主要是通过功能入口如菜单、按钮显隐来控制授权。具体来讲,就是根据指定用户制定权限来加载对应侧边菜单和页面内功能按钮。我们一个个来讲。...2、侧边菜单   鉴于本项目使用了vue-router,那显然,侧边就会跟对应路由关联,同时,前端项目会注册路由导航事件,此事件见src根目录下permission.js: ?   ...下边红框先调用menu store中获取侧边action,从后端拿到本用户具有权限侧边菜单: ?   ...主要用意就是经由后端动态菜单配置前端vue-router动态路由,用到了vue-router中路由懒加载这个重要特性。以上就是前端动态侧边实现。...可以看到,添加、修改、删除用户菜单是不可见。那现在把添加按钮v-permission指令拿掉,则再看效果: ?

    74710

    如何写出优雅开源项目文档

    摘要 mall项目是去年写SpringBoot实战电商项目,现在在Github上面已经有18k+star。去年12月份时候,mall项目只有一些必要说明文档和部署文档。...mall项目涉及到技术栈比较广泛,业务也比较复杂,却没有系统学习教程。今年5月份时候,开始完善整套学习教程,目前已经更新了三十余篇。...: docsify serve docs 访问该地址即可查看效果:http://localhost:3000/ 定制侧边 在index.html中添加侧边配置: window...architect/mall_arch_01.md) * [mall整合Swagger-UI实现在线API文档](architect/mall_arch_02.md) 这样就可以生成一个二级侧边...展示图片 定制导航 在index.html中添加导航配置: window.

    1.3K20

    Axure实战06:创建一个AppleSymbol图标库网站

    项目背景 在我们开发iOS应用程序过程,常常会用到图标按钮,Apple提供了一整套官网图标,开发人员可以直接使用Apple设计官网图标快速开发App。...基础样式-侧边导航 我们先分析下AppleSymbol图标库网站结构,它由一个侧边导航和内容展示区组成,当我们点击侧边导航菜单时,右侧内容区域将展示不同内容。...为了让侧边导航放在左边,我们需要固定侧边导航动态面板。 我们在样式工具中设置“固定到浏览器”,设置水平固定为“左侧”,垂直固定为“顶部”。 接下来完成里面的内容。...交互动作-侧边导航 为了实现单选效果,我们需要选中一个侧边导航菜单时,选中单个。 这里引用“选项组”概念,选项组中,交互唯一。...示例:当我们点击侧边导航导航菜单”时,内容区域“内联框架”应该展示“导航菜单”页面。

    2.6K20

    从零开始:VuePress2 + GitHub Pages 搭建你第一个免费博客网站

    导航配置 下面我们来配置下导航。...text 字段就是导航名字;link 字段就是页面的路径 NavbarGroup 对象 text 字段就是导航名字;children 字段是二级导航路径 效果就是这样侧边配置 接下来我们要把网站改造成自己喜欢样子...,博客有两个系列:网络和设计模式,接下来我们配置一下侧边导航。...我们先来看下配置好页面,首页是这样: 点击右上角“网络”按钮,出来网络侧边: 点击右上角“设计模式”按钮,出来设计模式侧边: 我们先来看一下配置文件: import { defaultTheme...], }, }), } 分组侧边原理是以文件夹名字为 key,value 为侧边对象数组,如果侧边对象里有 children 字段说明这是个二级侧边,children

    47911

    Spring 全家桶之 Spring Boot 2.6.4(六)- Web Develop(Part C)

    这是参与「掘金日新计划 · 4 月更文挑战」第20天,点击查看活动详情。...,因此可以将顶部和侧边抽取为公共页面 Thymeleaf官网中 8 Template Layout 提到了如何抽取公共页面 首先要在index.html顶部导航设置一个fragment 然后在...list.html页面通过th:insert标签来引入前面设置fragment 重新启动应用 页面顶部导航能够正确显示 页面引入方式包括th:insert,共有三种引入方式 th:insert...,给侧边设置一个id为selector 引入时通过id选择器引入公共片段 重新启动应用,查看页面顶部导航侧边 修改过后,侧边能够正常显示 抽取公共片段到单独页面 上面定义公共片段还是在具体页面中...,可以将公共页面,顶部和侧边单独抽取到一个html页面中,降低耦合 新建一个bar.html,将顶部导航侧边拷贝到该页面中 在dashboard.html页面和list.html页面引入公共片段

    86320
    领券