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底部菜单栏实现的实例代码,本文通过使用RadioGroup来实现底部导航菜单栏。现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
NULL 博文链接:https://android-zhang.iteye.com/blog/1485829
android底部菜单栏实现源码,参考。
android 底部菜单实现
用两种不同的方式实现了Android底部菜单栏的效果(也叫Tab选项卡)
积攒的资源,TabHost实现底部菜单栏的功能
(1)通过TabWidget实现 (2)隐藏TabWidget,通过RadioGroup和RadioButton实现底部菜单栏
让你五分钟就可以接入fragment的底部菜单栏,或者接入fragment+viewpager的底部菜单栏。
一个纯代码实现的android底部菜单栏,动态加载,简单实用
底部菜单栏很重要,我看了一下很多应用软件都是用了底部菜单栏做。我这里使用了tabhost做了一种通用的(就是可以像微信那样显示未读消息数量的,虽然之前也做过但是layout下的xml写的太臃肿,这里去掉了很多不必要...
android 应用 底部菜单栏的实现LinearLayout
使用RadioGroup实现的底部导航菜单栏
android使用ViewPager实现底部菜单栏和左右滑动效果,加载多个Activity
Fragment碎片实现底部菜单栏,仿支付宝UI
Android - 底部菜单架构设计及封装实现 对应下面的文章: http://blog.csdn.net/yzj_work/article/details/6894997
相关的链接: Android 底部菜单栏实现 最近刚看完ViewPager,就想到做这样一个Demo,当然也参考了高手们的实例里边的网格菜单,开始我打算用自定义的imgBtn,但是发现放在pager选项卡中不好排版,所以最好选了...
对于初学Android的同学值得一看!会对你有很多大的帮助
Android底部导航凸起菜单,利用的是FrameLayout实现的,效果和RadioGroup一样,同样有选中高亮的效果