关于安卓开发实现底部菜单栏(已过时做法,不建议使用)

简介: 将TabHost的标签放在底部   直接上代码 主代码: 1 package sdut; 2 3 import com.example.sdutfriends.R; 4 5 import android.

将TabHost的标签放在底部

 

直接上代码

主代码:

 1 package sdut;
 2 
 3 import com.example.sdutfriends.R;
 4 
 5 import android.app.AlertDialog;
 6 import android.app.TabActivity;
 7 import android.content.DialogInterface;
 8 import android.content.Intent;
 9 import android.os.Bundle;
10 import android.view.KeyEvent;
11 import android.view.Window;
12 import android.widget.RadioGroup;
13 import android.widget.RadioGroup.OnCheckedChangeListener;
14 import android.widget.TabHost;
15 import android.widget.TabHost.TabSpec;
16 
17 public class SdutMainActivity extends TabActivity{
18     private TabHost mth;
19     private RadioGroup radioGroup;
20     @Override
21     protected void onCreate(Bundle savedInstanceState) {
22         // TODO Auto-generated method stub
23         super.onCreate(savedInstanceState);
24         //去除标题
25         requestWindowFeature(Window.FEATURE_NO_TITLE);
26         setContentView(R.layout.sdut_activity);
27         
28         //初始化底部菜单栏
29         mth = this.getTabHost();
30         
31         TabSpec str1 = mth.newTabSpec("function_1").setIndicator("功能1");
32         str1.setContent(new Intent(SdutMainActivity.this,SdutFindOldman.class));
33         mth.addTab(str1); 
34         
35         TabSpec str2 = mth.newTabSpec("function_2").setIndicator("功能2");
36         str2.setContent(new Intent(SdutMainActivity.this,SdutFindActivity.class));
37         mth.addTab(str2);
38         
39         TabSpec str3 = mth.newTabSpec("function_3").setIndicator("功能3");
40         str3.setContent(new Intent(SdutMainActivity.this,SdutFindOldman.class));
41         mth.addTab(str3);
42         
43         TabSpec str4 = mth.newTabSpec("function_4").setIndicator("功能4");
44         str4.setContent(new Intent(SdutMainActivity.this,SdutFindOldman.class));
45         mth.addTab(str4);
46         
47         TabSpec str5 = mth.newTabSpec("function_5").setIndicator("功能5");
48         str5.setContent(new Intent(SdutMainActivity.this,SdutFindOldman.class));
49         mth.addTab(str5);
50         
51         //底部菜单栏点击事件
52         radioGroup = (RadioGroup) findViewById(R.id.main_radio);
53         radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
54             
55             @Override
56             public void onCheckedChanged(RadioGroup group, int checkedId) {
57                 // TODO Auto-generated method stub
58                 switch(checkedId)
59                 {
60             case R.id.radio_button0:mth.setCurrentTabByTag("function_1");break;
61             case R.id.radio_button1:mth.setCurrentTabByTag("function_2");break;
62             case R.id.radio_button2:mth.setCurrentTabByTag("function_3");break;
63             case R.id.radio_button3:mth.setCurrentTabByTag("function_4");break;
64             case R.id.radio_button4:mth.setCurrentTabByTag("function_5");break;
65 
66                 }
67             }
68         });
69     }
70     
71     //设置 返回键的 按钮响应事件
72     @Override
73     public boolean dispatchKeyEvent(KeyEvent event) {
74         // TODO Auto-generated method stub
75          if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_BACK)
76           {
77            new AlertDialog.Builder(this).setCancelable(false).setTitle("温馨提示").setMessage("您确定要退出吗?").setPositiveButton("确定", new DialogInterface.OnClickListener()
78            {
79             public void onClick(DialogInterface dialog, int which)
80             {
81              finish();
82             }
83            }).setNegativeButton("取消", new DialogInterface.OnClickListener()
84            {
85             public void onClick(DialogInterface dialog, int which)
86             {
87             }
88            }).show();
89            return true;// 不知道返回true或是false有什么区别??
90           }
91 
92         return super.dispatchKeyEvent(event);
93     }
94 }
主代码


layout代码

  1 <?xml version="1.0" encoding="utf-8"?>
  2 <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
  3     android:id="@android:id/tabhost"
  4     android:layout_width="fill_parent"
  5     android:layout_height="fill_parent"
  6     android:background="#334455" >                           //总体的背景  可以是图片   可以是颜色
  7     <LinearLayout 
  8         android:layout_width="fill_parent"
  9         android:layout_height="fill_parent"
 10         android:orientation="vertical"
 11         >
 12         <FrameLayout 
 13             android:id="@+id/msg_title"
 14             android:layout_width="fill_parent"
 15             android:layout_height="wrap_content"
 16             android:visibility="gone"
 17             >
 18             <TextView 
 19                 android:id="@+id/tv_wb"
 20                 android:layout_width="fill_parent"
 21                 android:layout_height="wrap_content"
 22                 android:background="@color/白色"/>
 23         </FrameLayout>
 24         <FrameLayout 
 25             android:id="@android:id/tabcontent"
 26             android:layout_width="fill_parent"
 27             android:layout_height="0.0dip"
 28             android:layout_weight="1.0"
 29             />
 30             <TabWidget
 31             android:id="@android:id/tabs"
 32             android:layout_width="fill_parent"
 33             android:layout_height="wrap_content"
 34             android:layout_weight="0.0"
 35             android:visibility="gone" />
 36             <RadioGroup
 37             android:id="@+id/main_radio"
 38             android:layout_width="fill_parent"
 39             android:layout_height="45dp"
 40             android:layout_gravity="bottom"
 41             
 42             android:gravity="center_vertical"
 43             android:orientation="horizontal" >
 44             <RadioButton
 45                 android:id="@+id/radio_button0"
 46                 style="@style/main_tab_bottom"
 47                 android:layout_height="fill_parent"
 48                 android:layout_marginTop="2.0dip"
 49                 android:textColor="@color/白色"                         
 50                 android:background="@color/黑色"
 51                 android:drawableTop="@drawable/icon"         //将图片放在文字上
 52                 android:tag="radio_button0"
 53                 android:text="标签1" />
 54             <RadioButton
 55                 android:id="@+id/radio_button1"
 56                 style="@style/main_tab_bottom"
 57                 android:layout_height="fill_parent"
 58                 android:layout_marginTop="2.0dip"
 59                 android:tag="radio_button1"
 60                 android:textColor="@color/白色"
 61                 android:background="@color/黑色"
 62                 android:drawableTop="@drawable/icon"
 63                 android:text="标签2" />
 64             <RadioButton
 65                 android:id="@+id/radio_button2"
 66                 style="@style/main_tab_bottom"
 67                 android:layout_height="fill_parent"
 68                 android:layout_marginTop="2.0dip"
 69                 android:textColor="@color/白色"
 70                 android:background="@color/黑色"
 71                 android:drawableTop="@drawable/icon"
 72                 android:tag="radio_button2"
 73                 android:text="标签3" />
 74             <RadioButton
 75                 android:id="@+id/radio_button3"
 76                 style="@style/main_tab_bottom"
 77                 android:layout_height="fill_parent"
 78                 android:layout_marginTop="2.0dip"
 79                 android:textColor="@color/白色"
 80                 android:background="@color/黑色"
 81                 android:drawableTop="@drawable/icon"
 82                 android:tag="radio_button3"
 83                 android:text="标签4" />
 84             <RadioButton
 85                 android:id="@+id/radio_button4"
 86                 style="@style/main_tab_bottom"
 87                 android:layout_height="fill_parent"
 88                 android:layout_marginTop="2.0dip"
 89                 android:textColor="@color/白色"
 90                 android:background="@color/黑色"
 91                 android:drawableTop="@drawable/icon"
 92                 android:tag="radio_button4"
 93                 android:text="标签5" />
 94         </RadioGroup>
 95             
 96         
 97     </LinearLayout>
 98     
 99     
100 
101 </TabHost>
layout


style.xml部分增加代码

 1     <style name="main_tab_bottom">
 2         <item name="android:textSize">10.0dip</item>
 3         <item name="android:textColor">#ffffffff</item>
 4         <item name="android:ellipsize">marquee</item>
 5         <item name="android:gravity">center_horizontal</item>
 6         <item name="android:paddingTop">1.0dip</item>
 7         <item name="android:layout_width">fill_parent</item>
 8         <item name="android:layout_height">fill_parent</item>
 9         <item name="android:button">@null</item>
10         <item name="android:singleLine">true</item>
11         <item name="android:drawablePadding">1.0dip</item>
12         <item name="android:layout_weight">1.0</item>
13     </style>
style

color.xml部分

<resources>
        <color name="黑色">#000000</color>
        <color name="白色">#FFFFFF</color>
</resources>

 

TabSpec str1 = mth.newTabSpec("function_1").setIndicator("功能1");
  str1.setContent(new Intent(SdutMainActivity.this,SdutFindOldman.class));
  mth.addTab(str1);
  
  TabSpec str2 = mth.newTabSpec("function_2").setIndicator("功能2");
  str2.setContent(new Intent(SdutMainActivity.this,SdutFindActivity.class));
  mth.addTab(str2);

 

这里的SdutFindOldman.class,,,SdutFindActivity.class代码就不贴了

效果图:

       

相关文章
|
30天前
|
缓存 搜索推荐 Android开发
安卓开发中的自定义控件实践
【10月更文挑战第4天】在安卓开发的海洋中,自定义控件是那片璀璨的星辰。它不仅让应用界面设计变得丰富多彩,还提升了用户体验。本文将带你探索自定义控件的核心概念、实现过程以及优化技巧,让你的应用在众多竞争者中脱颖而出。
|
30天前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
98 1
|
6天前
|
编解码 Java Android开发
通义灵码:在安卓开发中提升工作效率的真实应用案例
本文介绍了通义灵码在安卓开发中的应用。作为一名97年的聋人开发者,我在2024年Google Gemma竞赛中获得了冠军,拿下了很多项目竞赛奖励,通义灵码成为我的得力助手。文章详细展示了如何安装通义灵码插件,并通过多个实例说明其在适配国际语言、多种分辨率、业务逻辑开发和编程语言转换等方面的应用,显著提高了开发效率和准确性。
|
5天前
|
Android开发 开发者 UED
安卓开发中自定义View的实现与性能优化
【10月更文挑战第28天】在安卓开发领域,自定义View是提升应用界面独特性和用户体验的重要手段。本文将深入探讨如何高效地创建和管理自定义View,以及如何通过代码和性能调优来确保流畅的交互体验。我们将一起学习自定义View的生命周期、绘图基础和事件处理,进而探索内存和布局优化技巧,最终实现既美观又高效的安卓界面。
18 5
|
3天前
|
JSON Java Android开发
探索安卓开发之旅:打造你的第一个天气应用
【10月更文挑战第30天】在这个数字时代,掌握移动应用开发技能无疑是进入IT行业的敲门砖。本文将引导你开启安卓开发的奇妙之旅,通过构建一个简易的天气应用来实践你的编程技能。无论你是初学者还是有一定经验的开发者,这篇文章都将成为你宝贵的学习资源。我们将一步步地深入到安卓开发的世界中,从搭建开发环境到实现核心功能,每个环节都充满了发现和创造的乐趣。让我们开始吧,一起在代码的海洋中航行!
|
5天前
|
缓存 数据库 Android开发
安卓开发中的性能优化技巧
【10月更文挑战第29天】在移动应用的海洋中,性能是船只能否破浪前行的关键。本文将深入探讨安卓开发中的性能优化策略,从代码层面到系统层面,揭示如何让应用运行得更快、更流畅。我们将以实际案例和最佳实践为灯塔,引领开发者避开性能瓶颈的暗礁。
16 3
|
7天前
|
存储 IDE 开发工具
探索Android开发之旅:从新手到专家
【10月更文挑战第26天】在这篇文章中,我们将一起踏上一段激动人心的旅程,探索如何在Android平台上从零开始,最终成为一名熟练的开发者。通过简单易懂的语言和实际代码示例,本文将引导你了解Android开发的基础知识、关键概念以及如何实现一个基本的应用程序。无论你是编程新手还是希望扩展你的技术栈,这篇文章都将为你提供价值和启发。让我们开始吧!
|
1月前
|
Web App开发 安全 程序员
FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
多年的互联网寒冬在今年尤为凛冽,坚守安卓开发愈发不易。面对是否转行或学习新技术的迷茫,安卓程序员可从三个方向进阶:1)钻研谷歌新技术,如Kotlin、Flutter、Jetpack等;2)拓展新功能应用,掌握Socket、OpenGL、WebRTC等专业领域技能;3)结合其他行业,如汽车、游戏、安全等,拓宽职业道路。这三个方向各有学习难度和保饭碗指数,助你在安卓开发领域持续成长。
58 1
FFmpeg开发笔记(五十五)寒冬里的安卓程序员可进阶修炼的几种姿势
|
13天前
|
Java API Android开发
安卓应用程序开发的新手指南:从零开始构建你的第一个应用
【10月更文挑战第20天】在这个数字技术不断进步的时代,掌握移动应用开发技能无疑打开了一扇通往创新世界的大门。对于初学者来说,了解并学习如何从无到有构建一个安卓应用是至关重要的第一步。本文将为你提供一份详尽的入门指南,帮助你理解安卓开发的基础知识,并通过实际示例引导你完成第一个简单的应用项目。无论你是编程新手还是希望扩展你的技能集,这份指南都将是你宝贵的资源。
42 5
|
12天前
|
设计模式 IDE Java
探索安卓开发:从新手到专家的旅程
【10月更文挑战第22天】 在数字时代的浪潮中,移动应用开发如同一座金矿,吸引着无数探险者。本文将作为你的指南针,指引你进入安卓开发的广阔天地。我们将一起揭开安卓平台的神秘面纱,从搭建开发环境到掌握核心概念,再到深入理解安卓架构。无论你是初涉编程的新手,还是渴望进阶的开发者,这段旅程都将为你带来宝贵的知识和经验的财富。让我们开始吧!