根据网上的代码稍作修改了下,放着记录学习。

效果图如下:

主代码如下:

package com.andyidea.tabdemo;

import android.app.TabActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.Display;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.PopupWindow;
import android.widget.RadioButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.TabHost;
import android.widget.Toast; public class MainTabActivity extends TabActivity implements
OnCheckedChangeListener, OnClickListener
{ private TabHost mTabHost; private Intent mAIntent; private Intent mBIntent; private Intent mCIntent; private Intent mDIntent; private Intent mEIntent; private PopupWindow mPopupWindow; private RadioButton mR1; private RadioButton mR2; private RadioButton mR3; private RadioButton mR4; private LinearLayout mLinearLayout1; private LinearLayout mLinearLayout2; private LinearLayout mLinearLayout3; private LinearLayout mLinearLayout4; private LinearLayout mLinearLayout5; /**
* 基准屏幕密度
*/
public double STANDARD_DENSITY = 160; /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.maintabs); this.mAIntent = new Intent(this, AActivity.class);
this.mBIntent = new Intent(this, BActivity.class);
this.mCIntent = new Intent(this, CActivity.class);
this.mDIntent = new Intent(this, DActivity.class);
this.mEIntent = new Intent(this, EActivity.class); mR1 = ((RadioButton) findViewById(R.id.radio_button0));
mR1.setOnCheckedChangeListener(this);
mR2 = ((RadioButton) findViewById(R.id.radio_button1));
mR2.setOnCheckedChangeListener(this);
mR3 = ((RadioButton) findViewById(R.id.radio_button2));
mR3.setOnCheckedChangeListener(this);
mR4 = ((RadioButton) findViewById(R.id.radio_button3));
mR4.setOnCheckedChangeListener(this); setupIntent();
initPopupMenu();
} private void initPopupMenu()
{
View mPopupMenu =
LayoutInflater.from(this).inflate(R.layout.popupmenu, null); mPopupWindow =
new PopupWindow(mPopupMenu, (int) (getDensityRatio() * 90),
(int) (getDensityRatio() * 180));
mLinearLayout1 = (LinearLayout) mPopupMenu.findViewById(R.id.zhanghao);
mLinearLayout2 = (LinearLayout) mPopupMenu.findViewById(R.id.firav);
mLinearLayout3 = (LinearLayout) mPopupMenu.findViewById(R.id.yijian);
mLinearLayout4 = (LinearLayout) mPopupMenu.findViewById(R.id.abort);
mLinearLayout5 = (LinearLayout) mPopupMenu.findViewById(R.id.update);
mLinearLayout1.setOnClickListener(this);
mLinearLayout2.setOnClickListener(this);
mLinearLayout3.setOnClickListener(this);
mLinearLayout4.setOnClickListener(this);
mLinearLayout5.setOnClickListener(this); } private void dissmissPopupWindows()
{
if (mPopupWindow != null && mPopupWindow.isShowing())
{
mPopupWindow.dismiss();
}
} private double getDensityRatio()
{
DisplayMetrics displayMetrics = new DisplayMetrics();
Display display = getWindowManager().getDefaultDisplay();
display.getMetrics(displayMetrics); double w = displayMetrics.widthPixels;
double h = displayMetrics.heightPixels;
int CURRENT_DENSITY = displayMetrics.densityDpi;
double DENSITY_RATIO = CURRENT_DENSITY / STANDARD_DENSITY;
return DENSITY_RATIO;
} @Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
{
if (isChecked)
{
System.out.println("isChecked");
dissmissPopupWindows();
switch (buttonView.getId())
{
case R.id.radio_button0:
this.mTabHost.setCurrentTabByTag("A_TAB");
break;
case R.id.radio_button1:
this.mTabHost.setCurrentTabByTag("B_TAB");
break;
case R.id.radio_button2:
this.mTabHost.setCurrentTabByTag("C_TAB");
break;
case R.id.radio_button3:
mPopupWindow.showAsDropDown(mR4, 0, 0);
break;
}
} } private void setupIntent()
{
this.mTabHost = getTabHost();
TabHost localTabHost = this.mTabHost; localTabHost.addTab(buildTabSpec("A_TAB", R.string.main_news,
R.drawable.icon_1_n, this.mAIntent)); localTabHost.addTab(buildTabSpec("B_TAB", R.string.main_down,
R.drawable.icon_2_n, this.mBIntent)); localTabHost.addTab(buildTabSpec("C_TAB", R.string.main_message,
R.drawable.icon_3_n, this.mCIntent)); localTabHost.addTab(buildTabSpec("D_TAB", R.string.more,
R.drawable.icon_4_n, this.mDIntent));
} 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);
} @Override
public void onClick(View v)
{
dissmissPopupWindows();
switch (v.getId())
{
case R.id.zhanghao:
Toast.makeText(MainTabActivity.this, "账号管理", Toast.LENGTH_SHORT)
.show();
break;
case R.id.firav:
Toast.makeText(MainTabActivity.this, "收藏夹", Toast.LENGTH_SHORT)
.show();
break;
case R.id.yijian:
Toast.makeText(MainTabActivity.this, "意见反馈", Toast.LENGTH_SHORT)
.show();
break;
case R.id.abort:
Toast.makeText(MainTabActivity.this, "关于我们", Toast.LENGTH_SHORT)
.show();
break;
case R.id.update:
Toast.makeText(MainTabActivity.this, "版本更新", Toast.LENGTH_SHORT)
.show();
break;
}
}
}

点击我下载源码:

android的tabhost+RadioGroup+PopupWindow的更多相关文章

  1. android中TabHost和RadioGroup

    android底部菜单应用 博客分类: android--UI示例 TabHostMenuRadioGroupButton  在android中实现菜单功能有多种方法. Options Menu:用户 ...

  2. android之TabHost(下)

    首先建立res/layout/tab.xml文件 编写代码如下: <?xml version="1.0" encoding="utf-8"?> &l ...

  3. android之TabHost(上)

    首先建立文件res/layout/tab.xml 代码如下: <?xml version="1.0" encoding="utf-8"?> < ...

  4. 底部菜单栏(二) TabHost & RadioGroup 实现

    需求:使用TabHost & RadioGroup实现底部菜单栏: 效果图: 实现分析: 1.目录结构: 代码实现: 1. activity_main.xml <?xml version ...

  5. android学习--TabHost选项卡组件

    TabHost是一种非常有用的组件,TabHost能够非常方便地在窗体上放置多个标签页,每一个标签页获得了一个与外部容器同样大小的组件摆放区域.在手机系统的应用类似"未接电话".& ...

  6. Android ViewPager+TabHost实现首页导航

    今天发的是TabHost结合ViewPager实现首页底部导航的效果,虽然说网上有很多这样的Demo,不过呢,我还是要把自己练习写的发出来,没错!就是这么任性: 先上效果图,如下: 代码里面有注释,就 ...

  7. android 之 TabHost

    TabHost的实现有两种方式,第一种继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost.各个Tab中的内容在布局文件中定义就行了. mainAct ...

  8. Android底部TabHost API

    今天在项目中遇到了底部TabHost,顺便就写了一个底部TabHost的api继承即可使用非常简单,以下为源代码: 首先是自定义的TabHostActivity,如果要使用该TabHost继承该类即可 ...

  9. 12.Android之Tabhost组件学习

    TabHost是整个Tab的容器,TabHost的实现有两种方式: 第一种继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost.各个Tab中的内容在布 ...

随机推荐

  1. ubuntu安装配置搜狗拼音输入法

    进入下载目录,在终端执行安装 $sudo dpkg  -i   sogou_pinyin_linux_1.0.0.0033_amd64.deb 安装过程会出现 依赖关系问题 2 修复依赖关系完成搜狗拼 ...

  2. SQL分页小Demo

    SELECT @TotalCount=count(1) FROM TableA A WITH(NOLOCK) INNER JOIN TableB B WITH(NOLOCK) ON A.Id=B.Id ...

  3. PHPCMS GET标签使用

    大纲: get 标签概述get 标签语法get 标签创建工具get 调用本系统示例get 调用其他系统示例一.get 标签概述    通俗来讲,get 标签是Phpcms定义的能直接调用数据库里面内容 ...

  4. Window7 下开发php扩展

    一.首先查看phpinfo() 信息PHP Version 5.4.34Zend Extension Build     API220100525,TS,VC9 PHP Extension Build ...

  5. 初学socket,c语言写的简单局域网聊天

    在客户端所在的目录新建一个IP.bwj的文件,写上服务端的IP,不要带空格,保存.双方都打开一个客户端和一个服务端就可以聊天了,(可以写自己的IP,自己跟自己聊..)没有第三方服务器,服务端所在的电脑 ...

  6. 定制textField

    2014-08-05 11:00 447人阅读 评论(0) 收藏 举报  分类: IOS开发笔记(248)  版权声明:本CSDN博客所有文章不会即时更新,请关注个人博客:http://www.hua ...

  7. 用了OneAPM CT,宕机早知道!

    Twitter 的公司网站和移动应用在 1 月 19 日早上出现宕机,导致全球部分地区用户无法正常访问.这次宕机影响了很多用户,英国和印度用户已经无法访问 Twitter .第三方监测机构 DownD ...

  8. 用JQUERY的deferred异步按顺序调用后端API

    花了两天啊,想办法. 顺便,DJANGO分页的东东也熟悉了下. 如果不用最新的deferred这个东东,那我们以前传统的链式异步调用代码很难看,且长. 以下这个东东未作优化代码封装. this的参数用 ...

  9. 如何用python语句获得Python的安装目录

    官方文档上有写的,sys.executable是当前Python解释器(或者其他Python实现)的路径去掉后面一个路径分隔符(Windows下是'\')后的部分即可 >>>impo ...

  10. 14.5.5 Deadlocks in InnoDB

    14.5.5 Deadlocks in InnoDB 14.5.5.1 An InnoDB Deadlock Example 14.5.5.2 Deadlock Detection and Rollb ...