一、使用GridView布局
配置文件
<GridView android:id="@+id/GridView_toolbar" android:layout_height="wrap_content" android:layout_width="fill_parent" android:layout_alignParentBottom="true"></GridView>
// 创建底部菜单 Toolbar toolbarGrid = (GridView) findViewById(R.id.GridView_toolbar); toolbarGrid.setBackgroundResource(R.drawable.channelgallery_bg);// 设置背景 toolbarGrid.setNumColumns(5);// 设置每行列数 toolbarGrid.setGravity(Gravity.CENTER);// 位置居中 toolbarGrid.setVerticalSpacing(10);// 垂直间隔 toolbarGrid.setHorizontalSpacing(10);// 水平间隔 toolbarGrid.setAdapter(getMenuAdapter(menu_toolbar_name_array, menu_toolbar_image_array));// 设置菜单Adapter /** 监听底部菜单选项 **/ toolbarGrid.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { Toast.makeText(MainMenuView.this, menu_toolbar_name_array[arg2], Toast.LENGTH_SHORT) .show(); switch (arg2) { case TOOLBAR_ITEM_PAGEHOME: break; case TOOLBAR_ITEM_BACK: break; case TOOLBAR_ITEM_FORWARD: break; case TOOLBAR_ITEM_NEW: break; case TOOLBAR_ITEM_MENU: menuDialog.show(); break; } } });
二、使用tabHost来使用
http://flysnow.iteye.com/blog/946564
1、activity继承TabActivity
2、配置文件,使用自定义RadioButton取代,默认的tab风格,但是要不可见
<?xml version="1.0" encoding="utf-8"?> <TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="fill_parent" > <LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <!-- tabhost中的一个成员对象--> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="0.0dip" android:layout_weight="1.0"/> <!-- 设置不可见了 --> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_weight="0.0" android:visibility="visible"/> <RadioGroup android:id="@+id/main_tab" android:background="@drawable/maintab_toolbar_bg" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_vertical" android:layout_gravity="bottom"> <RadioButton android:layout_marginTop="2.0dip" android:text="@string/main_home" android:drawableTop="@drawable/icon_1_n" android:id="@+id/radio_button0" style="@style/main_tab_bottom"/> <RadioButton android:layout_marginTop="2.0dip" android:text="@string/main_news" android:drawableTop="@drawable/icon_2_n" android:id="@+id/radio_button1" style="@style/main_tab_bottom"/> <RadioButton android:layout_marginTop="2.0dip" android:text="@string/main_my_info" android:drawableTop="@drawable/icon_3_n" android:id="@+id/radio_button2" style="@style/main_tab_bottom"/> <RadioButton android:layout_marginTop="2.0dip" android:text="@string/menu_search" android:drawableTop="@drawable/icon_4_n" android:id="@+id/radio_button3" style="@style/main_tab_bottom"/> <RadioButton android:layout_marginTop="2.0dip" android:text="@string/more" android:drawableTop="@drawable/icon_5_n" android:id="@+id/radio_button4" style="@style/main_tab_bottom"/> </RadioGroup> </LinearLayout> </TabHost>
4、activity中使用TabHost localHost=getTabHost();,新建选项卡,设置intent
/** * 构建TabHost的Tab页 * @param tag 标记 * @param resLabel 标签 * @param resIcon 图标 * @param content 该tab展示的内容 * @return 一个tab */ private TabHost.TabSpec buildTabSpec(String tag, int resLabel, int resIcon,final Intent content) { return this.mTabHost.newTabSpec(tag).setIndicator(getString(resLabel), getResources().getDrawable(resIcon)).setContent(content); }
5、使用此切换Activity,mTabHost.setCurrentTabByTag(TAB_TAG_HOME);就会自动调用intent
三、使用Fragment来布局
主页面 底部菜单采用自定义LinerLayOut生成。需要标记当前选中了哪一个。为每一个View配置监听器。
在MainActivity中实现显示与隐藏fragment
private void setFragmentIndicator(int whichIsDefault) { mFragments = new Fragment[3]; mFragments[0] = getSupportFragmentManager().findFragmentById(R.id.fragment_home); mFragments[1] = getSupportFragmentManager().findFragmentById(R.id.fragment_search); mFragments[2] = getSupportFragmentManager().findFragmentById(R.id.fragment_settings); getSupportFragmentManager().beginTransaction().hide(mFragments[0]) .hide(mFragments[1]).hide(mFragments[2]).show(mFragments[whichIsDefault]).commit(); FragmentIndicator mIndicator = (FragmentIndicator) findViewById(R.id.indicator); FragmentIndicator.setIndicator(whichIsDefault); mIndicator.setOnIndicateListener(new OnIndicateListener() { @Override public void onIndicate(View v, int which) { getSupportFragmentManager().beginTransaction() .hide(mFragments[0]).hide(mFragments[1]) .hide(mFragments[2]).show(mFragments[which]).commit(); } }); }
相关推荐
本教程将详细讲解如何实现“仿360底部菜单布局”,以帮助开发者创建类似360应用那样的底部菜单栏。 首先,我们来了解底部导航菜单的基本概念。底部导航菜单通常包含3到5个图标和相应的文字标签,它位于屏幕底部,...
本文主要是参考我的博客"[Android] 底部菜单布局+PopupWindows实现弹出菜单功能(初级篇)"完成,http://blog.csdn.net/eastmount/article/details/40827939.主要介绍实现类似美图秀秀的功能,在底部显示菜单,点击不同...
5. **响应式设计**:无论是在Android还是iOS中,底部菜单栏的布局需要适应不同尺寸的屏幕,这涉及到响应式布局和AutoLayout的运用。 6. **动态加载和懒加载**:为了优化性能,各个页面可能采用懒加载策略,只有在...
在移动应用设计中,底部菜单(Bottom Navigation Bar)是用户界面的一个重要组成部分,它通常位于应用程序屏幕的底部,提供快捷的导航功能。标题"app底部菜单1"和描述中的信息暗示我们将探讨关于底部菜单设计的一些...
在Android开发中,底部栏菜单布局(Bottom Navigation Bar)是一种常见的用户界面设计,它提供了一种方便用户在多个主要功能之间快速切换的方式。通常,底部栏包含3到5个图标,每个图标代表一个不同的功能模块,点击...
在Android应用开发中,底部菜单栏(Bottom Navigation Bar)是一种常见的用户界面元素,它提供了一种方便用户在多个主要功能之间切换的方式。标题"底部菜单栏Demo"表明这是一个关于如何在Android应用中实现底部菜单...
接下来,我们讨论CSS(层叠样式表)在美化和布局底部菜单中的应用。为了确保在手机屏幕上适应,我们可以使用媒体查询(`@media`)来实现响应式设计。例如,将菜单在小屏幕设备上堆叠成垂直布局: ```css .bottom-...
本教程将详细讲解如何创建一个仿微信底部菜单栏,实现类似微信聊天界面底部菜单的功能,包括菜单字体的显示与隐藏、菜单项的动态缩放等效果。 一、底部菜单栏设计 底部菜单栏(Bottom Navigation Bar)通常包含3到5...
2. **设置布局**:为底部菜单创建一个布局文件,通常包含一个LinearLayout或RelativeLayout,以及几个ImageView或Button作为菜单项。每个菜单项都绑定一个点击事件,当用户点击时,调用相应的方法来切换子Activity。...
- 悬浮动作按钮(Floating Action Button, FAB):在某些设计中,FAB会与底部菜单共存,需要注意它们的交互和布局。 5. **测试和调试**: - 在Android Studio中运行应用,检查底部菜单的显示效果和交互是否符合...
底部菜单在许多应用程序中是必不可少的设计元素,它通常位于屏幕底部,为用户提供主要的功能入口。在Android开发中,实现底部菜单通常...通过合理地组合和布局这些组件,可以创建出符合用户习惯、操作便捷的底部菜单。
在移动应用开发中,引导页(Splash Screen)和底部菜单(Bottom Navigation)是常见的设计元素,它们对于提升用户体验和导航效率至关重要。本文将详细介绍如何在Android应用中实现这两个功能,以"引导页+底部菜单"为...
在“底部菜单android”的场景中,我们通常会结合RadioGroup和ViewPager来实现这一功能。下面将详细解释这两个组件以及如何将它们结合起来创建一个具有四个子菜单的底部导航栏。 1. RadioGroup: RadioGroup是...
3. **适配不同屏幕尺寸**:确保底部菜单在不同屏幕尺寸和方向上都能正常显示,可能需要调整布局属性,如`android:layout_gravity`。 4. **动态加载内容**:根据用户选择的菜单项,动态加载相应的Fragment或Activity...
【标题】"仿微信底部菜单"是一个Android应用开发项目,其目标是实现类似微信聊天界面底部的导航菜单。微信的底部菜单通常包含“聊天”、“发现”、“通讯录”、“我”等几个主要功能模块,方便用户在不同功能之间...
要创建一个底部菜单栏,我们首先需要在布局文件中定义一个`BottomNavigationView`。这是一个自Android支持库引入的组件,用于轻松实现底部导航栏。在XML布局文件中,你可以这样设置: ```xml android:id="@+id/...
在实现仿微信底部菜单时,CSS3的以下特性尤为重要: 1. ** Flexbox布局 **:Flexbox允许我们轻松地创建响应式和动态布局,使得菜单项可以灵活地在一行内排列和对齐。 2. ** Transitions和Animations **:通过...
在网页设计中,底部菜单栏通常是一个不可或缺的部分,它为用户提供了一个方便的导航途径,无论页面滚动到何处,都能快速访问关键页面或功能。本文将详细介绍如何使用JavaScript和HTML来实现一个动态的网页底部菜单栏...
- **维护状态**:为了保持底部菜单的状态,通常会使用`BottomNavigationView`或自定义布局配合Button来实现,确保用户切换页面后,底部菜单选中状态正确。 5. **使用BottomNavigationView**: 如果项目中使用了`...