资源准备

下载一个微信apk,解压,并找出所需的资源图片。

layout中XML布局

<?xml version="1.0" encoding="UTF-8"?>
<!-- Tab导航 最新版 -->
<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" ><RelativeLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><FrameLayoutandroid:id="@android:id/tabcontent"android:layout_width="fill_parent"android:layout_height="fill_parent"android:background="#FFF" ></FrameLayout><!-- TabWidget管理所有的选项卡,id名是android指定的 --><TabWidgetandroid:id="@android:id/tabs"android:layout_width="fill_parent"android:layout_height="fill_parent"android:visibility="gone" /><!-- Frame下放置单选群组替代TAB效果 --><RadioGroupandroid:id="@+id/main_radio"android:layout_width="fill_parent"android:layout_height="wrap_content"android:background="#ccc"android:gravity="center_vertical"android:orientation="horizontal"android:layout_alignParentBottom="true" ><RadioButtonandroid:id="@+id/tab_icon_weixin"style="@style/main_tab_bottom"android:checked="true"android:drawableTop="@drawable/tab_weixin_normal"android:text="微信" /><RadioButtonandroid:id="@+id/tab_icon_address"style="@style/main_tab_bottom"android:checked="false"android:drawableTop="@drawable/tab_address_normal"android:text="通讯录" /><RadioButtonandroid:id="@+id/tab_icon_find"style="@style/main_tab_bottom"android:drawableTop="@drawable/tab_find_frd_normal"android:text="发现" /><RadioButtonandroid:id="@+id/tab_icon_myself"style="@style/main_tab_bottom"android:drawableTop="@drawable/tab_settings_normal"android:text="我" /></RadioGroup></RelativeLayout>
</TabHost>

style中XML文档

    <!-- MainTab选项卡中单选按钮的样式,其中包括了文本、selector、padding、宽高、权重等的设置 --><style name="main_tab_bottom"><item name="android:textSize">13sp</item><item name="android:textColor">#666666</item><item name="android:gravity">center_horizontal</item><!-- 该处引用drawable下面的一个xml文档(selector) --><item name="android:paddingTop">5dp</item><item name="android:layout_width">fill_parent</item><item name="android:layout_height">wrap_content</item><item name="android:layout_weight">1.0</item><!-- 每个按钮的权重,相等则平分尺寸 --><item name="android:button">@null</item><!-- 隐藏单选按钮 --><item name="android:layout_marginTop">1.0dip</item><item name="android:paddingBottom">5.0dip</item></style>

Activity中Java文件

package com.app;import android.app.AlertDialog;
import android.app.TabActivity;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TabHost;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.TabWidget;/*** Tab导航*/
//public class Tabs extends TabActivity implements View.OnClickListener{
public class Tabs extends TabActivity{public static TabHost mTabHost;public static TabHost getmTabHost() {return mTabHost;}private RadioGroup main_radio;private RadioButton tab_icon_weixin, tab_icon_address, tab_icon_find,tab_icon_myself;/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.tabs);mTabHost = getTabHost();final TabWidget tabWidget = mTabHost.getTabWidget();tabWidget.setStripEnabled(false);// 圆角边线不启用//添加n个tab选项卡,定义他们的tab名,指示名,目标屏对应的类mTabHost.addTab(mTabHost.newTabSpec("TAG1").setIndicator("0").setContent(new Intent(this, WeixinActivity.class)));mTabHost.addTab(mTabHost.newTabSpec("TAG2").setIndicator("1").setContent(new Intent(this, AddressActivity.class)));mTabHost.addTab(mTabHost.newTabSpec("TAG3").setIndicator("2").setContent(new Intent(this, FindActivity.class)));mTabHost.addTab(mTabHost.newTabSpec("TAG4").setIndicator("3").setContent(new Intent(this, MyselfActivity.class)));// 视觉上,用单选按钮替代TabWidgetmain_radio = (RadioGroup) findViewById(R.id.main_radio);tab_icon_weixin = (RadioButton) findViewById(R.id.tab_icon_weixin);tab_icon_address = (RadioButton) findViewById(R.id.tab_icon_address);tab_icon_find = (RadioButton) findViewById(R.id.tab_icon_find);tab_icon_myself = (RadioButton) findViewById(R.id.tab_icon_myself);main_radio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {@Overridepublic void onCheckedChanged(RadioGroup group, int id) {if (id == tab_icon_weixin.getId()) {mTabHost.setCurrentTab(0);} else if (id == tab_icon_address.getId()) {mTabHost.setCurrentTab(1);} else if (id == tab_icon_find.getId()) {mTabHost.setCurrentTab(2);} else if (id == tab_icon_myself.getId()) {mTabHost.setCurrentTab(3);}}});// 设置当前显示哪一个标签mTabHost.setCurrentTab(0);// 遍历tabWidget每个标签,设置背景图片 无for (int i = 0; i < tabWidget.getChildCount(); i++) {View vv = tabWidget.getChildAt(i);vv.getLayoutParams().height = 45;// vv.getLayoutParams().width = 65;vv.setBackgroundDrawable(null);}
//      findViewById(R.id.tab_icon_brand).setOnClickListener(this);}
}

效果图

【Android】模拟Android微信APK底部的TabHost选项卡相关推荐

  1. Android 实现类似微信页面底部导航效果

    Android 实现类似微信页面底部导航效果 参考的时候需要修改的地方做一下更改,里面有一些多余的代码没有删除. .java里面的主要代码 public class MainActivity exte ...

  2. Android之底部菜单TabHost的实现

    /<span style="font-size:24px;">res/values/styles.xml代码:</span> <resources&g ...

  3. 【Android】“微信”apk中的“发现”和“我”两个模块的布局

    先下载一个微信apk,以压缩包的形式打开,对比微信界面,找出我们需要的素材. 以下两个模块的还原完全采用RelativeLayout相对布局. 按钮效果的实现 点击对应版块,将有点击效果.这可以通过修 ...

  4. android高仿微信底部渐变导航栏

    最近有很多人问微信底部的变色卡片导航是怎么做的,我在网上看了好几个例子,都是效果接近,都存有一些差异,自己琢磨也做了一个,几乎99%的还原,效果还不错吧 仔细观察微信图片,发现他有两部分内容,外面的边 ...

  5. android如何实现微信功能吗,android 借助AccessibilityService实现模拟点击功能-微信助手(一)...

    下集预告: android 借助AccessibilityService实现模拟点击功能-几个工具类(二)发此文还是想分享一些自己在android模拟点击这块的收获和想法 为什么开发模拟点击? 这是一 ...

  6. uniapp开启微信支付、支付宝支付 + Android Studio离线打包APK文件 (前端部分)

    效果图 已完成,可以调起微信app进行支付.支付宝app也可以. @20221203 流程 步骤 HBuilderX项目开启权限 (按照手册选择对应支付服务商需要的权限) 手册:https://nat ...

  7. android 模拟apk安装广播,安装APK文件到Android模拟器 及shell

    一.安装APK文件到Android模拟器 Android手机使用的执行文件为APK格式,类似于Windows平台的exe文件.在Android模拟器中安装APK文件有多种方法,如果你是开发人员,可以通 ...

  8. Android应用底部导航栏(选项卡)实例

    现在很多android的应用都采用底部导航栏的功能,这样可以使得用户在使用过程中随意切换不同的页面,现在我采用TabHost组件来自定义一个底部的导航栏的功能. 我们先看下该demo实例的框架图: 其 ...

  9. android高仿微信UI点击头像显示大图片效果

    用过微信的朋友朋友都见过微信中点击对方头像显示会加载大图,先贴两张图片说明下: 这种UI效果对用户的体验不错,今天突然有了灵感,试着去实现,结果就出来了.. 下面说说我的思路: 1.点击图片时跳转到另 ...

  10. php支付密码控件,Android高仿微信支付密码输入控件实例代码

    这篇文章主要为大家详细介绍了Android高仿微信支付密码输入控件的具体实现代码,供大家参考,具体内容如下 像微信支付密码控件,在app中是一个多么司空见惯的功能.最近,项目需要这个功能,于是乎就实现 ...

最新文章

  1. 整理一周的Python资料,包含各阶段所需网站、项目,2020燥起来!
  2. PHP开启session的函数,ThinkPHP中session函数详解
  3. java读取 500M 以上文件,java读取大文件
  4. poj -- 1185 炮兵阵地
  5. Nginx反向代理为什么能够提升服务器性能?
  6. 使用Remix编写Solidity语言的小例子
  7. 提交表单数据到数据库_普通表单不仅适用于数据库
  8. python用什么软件编程-初学python编程,有哪些不错的软件值得一用?
  9. 【渝粤教育】电大中专电商运营实操 (12)作业 题库
  10. c语言 16进制编辑器,十六进制编辑器(010 Editor)
  11. 2009年程序员考试大纲
  12. 奇妙的数字小明发现了一个奇妙的数字,他的平方和立方正好把0~9这10个数字每个用且只用了一次,你能猜出这个数字是多少吗
  13. 使用3g模块SIM5360E收发短信
  14. JQuery Ajax 参数含有特殊字符
  15. RobotFramework相关
  16. 基于JAVA的游戏补丁共享网站实现
  17. Python3.5 使用 protobuf3.0.0.beta2
  18. ZigBee 设置信道、PANID、发射功率
  19. 【推荐系统】POLY2、FM、FFM模型的进化之路
  20. 解决 树莓派ping: baidu.com: 域名解析暂时失败

热门文章

  1. USB Still Image Capture设备类
  2. 游戏开发工程师岗位要求
  3. java生成短网址_http 长网址、短网址(短网址生成API)
  4. 北京的旅游攻略(持续更新中)
  5. 无限滚动新一代老虎机
  6. office 论文 页码_论文页码如何设置,如何给论文设置完美页码
  7. 三维GIS显示中,利用太阳高度角和方位角计算光照
  8. 【iOS】—— 多线程编程八重曲之(二)- Pthread
  9. iOS - 毛玻璃效果
  10. python开源搜索引擎_python语言磁力搜索引擎源码公开,基于DHT协议,十二分有技术含量的技术博客...