仿UC底部菜单栏实例源码
相关的链接:
Android 底部菜单栏实现
http://www.eoeandroid.com/thread-211510-1-1.html
android锁定底部菜单栏实现
http://www.eoeandroid.com/thread-232563-1-1.html
Android实现底部菜单栏
http://www.eoeandroid.com/thread-66152-1-1.html
自定义底部菜单栏(附源码)
http://www.eoeandroid.com/thread-49199-1-1.html
-----------------帖子正文---------------
最近刚看完ViewPager,就想到做这样一个Demo,当然也参考了高手们的实例
里边的网格菜单,开始我打算用自定义的imgBtn,但是发现放在pager选项卡中不好排版,所以最好选了GridView,简单实用
一、
先主界面xml
activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/bg" tools:context=".MainActivity" > <Button android:id="@+id/btn_menu" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:text="show/hide Menu" /> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/btn_menu" android:gravity="center" android:orientation="horizontal" > <com.example.myMenu.MyImgBtn android:id="@+id/main_btn1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="15dp" android:layout_weight="1" /> <com.example.myMenu.MyImgBtn android:id="@+id/main_btn2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="15dp" android:layout_weight="1" /> <com.example.myMenu.MyImgBtn android:id="@+id/main_btn3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="15dp" android:layout_weight="1" /> <com.example.myMenu.MyImgBtn android:id="@+id/main_btn4" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_margin="15dp" android:layout_weight="1" /> </LinearLayout> <RelativeLayout android:id="@+id/layout_menu" android:layout_width="match_parent" android:layout_height="200dp" android:layout_alignParentBottom="true" > <LinearLayout android:id="@+id/menu" android:layout_width="match_parent" android:layout_height="40dp" android:background="#dd000000" android:gravity="center" > <TextView android:id="@+id/tv_main" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="常用" android:textColor="#ffffffff" /> <TextView android:id="@+id/tv_utils" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="工具" android:textColor="#ffffffff" /> <TextView android:id="@+id/tv_set" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="设置" android:textColor="#ffffffff" /> </LinearLayout> <LinearLayout android:id="@+id/layout_anim" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_below="@+id/menu" android:background="#eeff8c00" > <ImageView android:id="@+id/iv_cursor" android:layout_width="fill_parent" android:layout_height="wrap_content" android:scaleType="matrix" android:src="@drawable/img_cursor" /> </LinearLayout> <android.support.v4.view.ViewPager android:id="@+id/myPager" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/layout_anim" android:flipInterval="30" android:persistentDrawingCache="animation" /> </RelativeLayout> </RelativeLayout>
ViewPager中的三个选项卡xml
view_main.xml,view_set.xml,view_utils.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="#77ff0000" android:orientation="vertical" > <GridView android:id="@+id/myGridView" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="4" android:layout_margin="10dp" android:horizontalSpacing="20dp" android:gravity="center" android:verticalSpacing="20dp" ></GridView> </LinearLayout>
这是选项卡一view_main.xml,后面的两个和这个一样,就不发了
最后就是还有一个GirdView的适配器xml
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/imgbtn_img" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/imgbtn_text" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/imgbtn_img" android:layout_centerHorizontal="true" android:text="Text" android:textColor="#ff0000ff" android:textSize="10sp" /> </RelativeLayout> xml布局部分就这么多了
原文:
仿UC底部菜单栏
http://www.eoeandroid.com/thread-247377-1-1.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构