`
gmxstar
  • 浏览: 17874 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

android底部菜单栏实现

阅读更多

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的高度

最终的效果如下图所示:

 

  • 大小: 14.9 KB
分享到:
评论

相关推荐

    Android--底部菜单栏实现

    这篇博客"Android--底部菜单栏实现"可能详细介绍了如何在Android项目中实现这样的功能。由于没有直接提供博客的具体内容,我会根据通常的实现方法来讲解这一主题。 首先,底部菜单栏的实现通常涉及到`Bottom...

    Android底部菜单栏

    这个“Android底部菜单栏”教程是为初学者设计的,旨在帮助他们理解如何在Android应用中实现这一功能。我们将主要探讨TabHost组件,它是Android早期版本中用来实现标签页式导航的一种方式。 首先,我们需要了解底部...

    Android底部菜单栏实现的实例代码

    在Android应用开发中,底部菜单栏(Bottom Navigation Bar)是一个常见的设计模式,它提供了一种简单的方法让用户在应用的主要功能之间进行切换。本实例将详细讲解如何使用RadioGroup来实现这样一个底部导航菜单栏。...

    android底部菜单栏

    总的来说,创建Android底部菜单栏涉及到布局设计、菜单资源定义、事件监听以及可能的样式定制。开发者需要对Android的UI组件和生命周期有深入理解,才能构建出用户体验良好的底部导航功能。通过不断实践和优化,我们...

    Android 底部菜单栏(RadioGroup+Fragment)美化

    总之,Android 底部菜单栏的实现是一个结合了RadioGroup和Fragment的重要实践。通过对RadioGroup的选择监听和Fragment的动态管理,我们可以创建出功能强大且美观的底部导航。在实际开发中,应注重用户体验,不断优化...

    android 自定义仿微信底部菜单栏

    本教程将详细讲解如何创建一个仿微信底部菜单栏,实现类似微信聊天界面底部菜单的功能,包括菜单字体的显示与隐藏、菜单项的动态缩放等效果。 一、底部菜单栏设计 底部菜单栏(Bottom Navigation Bar)通常包含3到5...

    Android底部菜单栏的两种实现方式demo 附完整源码.rar

    本教程将详细讲解两种实现Android底部菜单栏的方法,并提供完整的源码供参考。 一、通过TabWidget实现底部菜单栏 TabWidget是Android SDK中的一个控件,它允许在界面上创建一个可滚动的标签页。以下是如何使用...

    android底部菜单中间部分凸起

    总结来说,"android底部菜单中间部分凸起"是通过自定义样式和选中事件监听来实现的,而"微信底部带数目显示菜单"则是通过自定义菜单项视图或者使用BadgeView来完成的。这两个特性都是为了提升用户体验,提供清晰的...

    Android 底部导航栏凸出点击

    在Android应用开发中,底部导航栏...总之,“Android 底部导航栏凸出点击”是一个提高用户界面互动性的设计,通过自定义样式、触摸反馈、动画和事件监听,我们可以实现这个功能,提升用户在移动应用中的操作体验。

    Android 使用RadioGroup实现底部菜单栏

    在Android应用开发中,创建一个底部菜单栏是十分常见的需求,它可以帮助用户在多个功能之间进行切换。本篇文章将深入探讨如何使用`RadioGroup`组件来实现这样的底部导航菜单栏。 `RadioGroup`是Android SDK提供的一...

    Android 通用菜单栏实现

    本篇文章将详细探讨如何在Android中实现一个可复用的、灵活的通用菜单栏,以满足不同软件开发需求。 首先,我们需要理解Android菜单的基础结构。在Android中,菜单通常在`onCreateOptionsMenu()`方法中创建,并通过...

    Fragment碎片实现底部菜单栏,仿支付宝UI

    在Android应用开发中,"Fragment碎片"是一种可重用的UI组件,它可以在Activity的不同部分显示...通过以上步骤,我们就能在Android应用中实现一个功能完整且视觉效果良好的底部菜单栏,让用户在不同功能模块间轻松切换。

    实现Android底部菜单栏效果(源码)

    在Android应用开发中,底部菜单栏(Bottom Navigation...总的来说,设计和实现Android底部菜单栏需要对Android的布局系统、事件处理和资源管理有深入理解。通过不断实践和优化,你可以创建出符合用户体验的底部导航栏。

    炫酷的底部菜单栏切换效果.zip

    总之,“炫酷的底部菜单栏切换效果”是一个结合了Android底部菜单、自定义动画和视图交互设计的实例。开发者需要掌握Android UI组件的使用、动画系统的工作原理以及如何通过编程实现动态效果。通过深入理解这些知识...

    Android底部菜单栏 仿微博效果

    下面我们将详细介绍如何使用TabHost来实现Android底部菜单栏的仿微博效果。 首先,我们需要在XML布局文件中设置TabHost。在提供的部分代码中,我们可以看到以下布局结构: ```xml &lt;TabHost xmlns:android=...

    Android五分钟让你实现底部菜单栏(fragment或者fragment+viewpager)

    在Android应用开发中,底部...通过以上方法,你可以在Android应用中轻松实现底部菜单栏,无论是简单的Fragment切换还是结合ViewPager的复杂场景。记得在实际开发中根据项目需求进行调整和优化,以提供最佳的用户体验。

    Android Studio 底部自定义菜单

    在`GreatWallApp`项目中,可能已经实现了这样的底部菜单,包括消息数提醒功能。消息数提醒通常需要与应用的数据模型相结合,当有新消息时,通过`BadgeView`或者在底部菜单图标上添加一个小红点来显示未读消息的数量...

    android底部凸起导航菜单

    本示例中的“android底部凸起导航菜单”是利用`FrameLayout`来实现的,它具有类似`RadioGroup`的交互效果,即点击某个选项时会显示高亮状态,提供清晰的用户反馈。 `FrameLayout`是Android的一种布局容器,它允许子...

Global site tag (gtag.js) - Google Analytics