Android开发中有的时候需要把菜单显示在屏幕的底部,但是Android本身没有提供这样的控件,因此需要自己写代码来实现,网上Google一下有关这个主题的网页,最终都是从这篇《android实现底部菜单栏》文复制过去的(源代码在这里),但是如果你把这篇文里的代码全部复制过去,你会发现在模拟器里看不到底部的菜单栏,问题出在哪儿呢?仔细检查一下/res/layout/main.xml这个文件里的下面这节:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="450px">
</LinearLayout>
问题就出在上面标红的那行,这里把屏幕中间内容区的高度写死了,如果你的手机屏幕高度没那么高,很显然菜单栏会被挤出屏幕最底端。
解决这个问题其实很简单,首先调用WindowManager的getDefaultDisplay()方法获取屏幕的高度,然后减去Activity Titlebar的高度和将要显示的菜单栏高度,剩下的差值就应该是内容区的高度了。具体的代码示例如下:
修改上面的布局如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="10px"
android:id="@+id/contentBody">
<TextView android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center" android:textSize="20px"
android:layout_gravity="center" android:text="内容区"/>
</LinearLayout>
其中里面LinearLayout的layout_height值随便写个有效值。
再在Activity的onCreate方法里写上设置这个LinearLayout高度的代码,如下所示:
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
int screenHeight = display.getHeight(); //屏幕高度
int titlebarHeight; //Activity的标题栏高度
int menuBarHeight; // 底部菜单栏的高度
int topContentHeight; //最上端内容区高度(假如在这个contentBody上端还有其他内容的话)
LinearLayout bodyLayout = (LinearLayout) findViewById(R.id.contentBody);
LinearLayout.LayoutParams layParams = (android.widget.LinearLayout.LayoutParams) bodyLayout.getLayoutParams();
layParams.height = screenHeight - titlebarHeight - menuBarHeight - topContentHeight;
bodyLayout.setLayoutParams(layParams); //设置contentBody的高度
最终的效果如下图所示:
菜单栏已经显示在屏幕的最底端了。
分享到:
相关推荐
总之,创建一个Android底部菜单栏需要理解`BottomNavigationView`的工作原理,以及如何结合`MenuItem`和`Fragment`来响应用户的交互。同时,掌握好Android布局管理、事件监听和数据绑定等基本概念也是必不可少的。...
这个“Android底部菜单栏”教程是为初学者设计的,旨在帮助他们理解如何在Android应用中实现这一功能。我们将主要探讨TabHost组件,它是Android早期版本中用来实现标签页式导航的一种方式。 首先,我们需要了解底部...
android底部菜单栏demo
在Android应用开发中,创建一个底部菜单栏是十分常见的需求,它可以帮助用户在多个功能之间进行切换。本篇文章将深入探讨如何使用`RadioGroup`组件来实现这样的底部导航菜单栏。 `RadioGroup`是Android SDK提供的一...
总的来说,创建Android底部菜单栏涉及到布局设计、菜单资源定义、事件监听以及可能的样式定制。开发者需要对Android的UI组件和生命周期有深入理解,才能构建出用户体验良好的底部导航功能。通过不断实践和优化,我们...
本文将深入探讨如何在Android Studio中实现底部自定义菜单,并结合"GreatWallApp"这一项目实例,来讲解相关的编程知识。 首先,底部自定义菜单通常指的是在应用界面底部设置的一排图标或文字按钮,用户可以通过点击...
在Android应用开发中,底部...通过以上方法,你可以在Android应用中轻松实现底部菜单栏,无论是简单的Fragment切换还是结合ViewPager的复杂场景。记得在实际开发中根据项目需求进行调整和优化,以提供最佳的用户体验。
在Android应用开发中,"Fragment碎片"是一种可重用的UI组件,它可以在Activity的不同部分显示...通过以上步骤,我们就能在Android应用中实现一个功能完整且视觉效果良好的底部菜单栏,让用户在不同功能模块间轻松切换。
下面我们将详细探讨如何在Android中实现这个效果。 首先,我们需要了解Android的底部导航栏的基本结构。通常,它由一个`BottomNavigationView`组件来创建,这是Android Support Library或AndroidX库的一部分。在XML...
在Android应用开发中,自定义用户界面是提升用户体验的关键步骤之一。本教程将详细讲解如何创建一个仿微信底部菜单栏,实现类似微信...在开发过程中,不断优化和迭代,将使这个底部菜单栏更加完善和适应用户的需求。
5. **响应式设计**:无论是在Android还是iOS中,底部菜单栏的布局需要适应不同尺寸的屏幕,这涉及到响应式布局和AutoLayout的运用。 6. **动态加载和懒加载**:为了优化性能,各个页面可能采用懒加载策略,只有在...
通过以上步骤和注意事项,你将能够成功地在Android应用中实现底部菜单栏与ViewPager的结合,达到左右滑动切换多个Activity或Fragment的效果。这种设计模式在许多应用中都得到了广泛应用,提高了用户体验和交互性。
通过查看和分析该项目的源代码,你可以更深入地了解如何在实际项目中实现和美化底部菜单栏。 总之,Android 底部菜单栏的实现是一个结合了RadioGroup和Fragment的重要实践。通过对RadioGroup的选择监听和Fragment的...
在Android应用开发中,底部菜单(Bottom Navigation)是一种常见的用户界面元素,用于提供在多个主要功能之间快速切换的途径。这种设计模式遵循Material Design规范,旨在提高用户体验,让用户能够轻松地访问应用...
本教程将详细讲解两种实现Android底部菜单栏的方法,并提供完整的源码供参考。 一、通过TabWidget实现底部菜单栏 TabWidget是Android SDK中的一个控件,它允许在界面上创建一个可滚动的标签页。以下是如何使用...
在Android应用开发中,底部菜单栏(Bottom Navigation...总的来说,设计和实现Android底部菜单栏需要对Android的布局系统、事件处理和资源管理有深入理解。通过不断实践和优化,你可以创建出符合用户体验的底部导航栏。
总结来说,"android底部菜单中间部分凸起"是通过自定义样式和选中事件监听来实现的,而"微信底部带数目显示菜单"则是通过自定义菜单项视图或者使用BadgeView来完成的。这两个特性都是为了提升用户体验,提供清晰的...
本教程将深入探讨如何在Android项目中实现微信式的底部菜单栏和顶部菜单栏,提供良好的导航功能和用户体验。 首先,底部菜单栏是Android应用中常见的组件,它通常包含3到5个图标,每个图标对应一个主要的功能模块。...
总之,“android底部凸起导航菜单”是Android开发中一个实用的设计模式,通过`FrameLayout`和自定义逻辑,我们可以创建出具有高亮效果的导航菜单,提供良好的用户体验。学习并掌握这一技术,对于提升Android应用的...