• android学习日记03--常用控件tabSpec/tabHost


    常用控件
    7、TabSpec和TabHost
      比较常用的控件,感觉手机QQ的整体布局就是这个,只不过tab放在底部而已。TabSpec相当于浏览器的分页,而TabHost就相当于分页的集合
    TabSpec分页可以相当于一个独立的组件,也可以是一个布局,将每个分页装进TabHost里

    Activity extends TabActivity
    以前都是 继承android.app.Activity
    这里为了获得Activity分页菜单,继承它,显然TabActivity和Activity有同个父类。

    创建分页菜单对象,将activity_main装进去
    tableHost = this.getTabHost();
    LayoutInflater.from(this).inflate(R.layout.activity_main,tableHost.getTabContentView());

    通过newTabSpec 来创建分页
    ts1 = tableHost.newTabSpec("tab1");

    设置名称和背景图
    ts2.setIndicator("tab2", getResources().getDrawable(R.drawable.bg));

    添加组件
    ts2.setContent(R.id.et);

    通过addtab加进去
    tableHost.addTab(ts1);
    tableHost.addTab(ts2);
    tableHost.addTab(ts3);

    设置监听
    tableHost.setOnTabChangedListener(this);

    arg0 表示传入的tab名称
    @Override
    public void onTabChanged(String arg0) {
      if (arg0.equals("tab1")) {
        Toast.makeText(this, "分页1", Toast.LENGTH_LONG).show();
      } else if(arg0.equals("tab2")){
        Toast.makeText(this, "分页2", Toast.LENGTH_LONG).show();
      }else if(arg0.equals("tab3")){
        Toast.makeText(this, "分页3", Toast.LENGTH_LONG).show();
      }
    }

    完整代码和运行效果如下:

     1 package com.example.tabproject;
     2 
     3 import android.os.Bundle;
     4 import android.app.Activity;
     5 import android.app.TabActivity;
     6 import android.view.LayoutInflater;
     7 import android.view.Menu;
     8 import android.widget.TabHost;
     9 import android.widget.Toast;
    10 import android.widget.TabHost.OnTabChangeListener;
    11 import android.widget.TabHost.TabSpec;
    12 
    13 public class MainActivity extends TabActivity implements OnTabChangeListener{
    14 
    15     private TabSpec ts1,ts2,ts3;
    16     private TabHost tableHost;
    17     
    18     @Override
    19     protected void onCreate(Bundle savedInstanceState) {
    20         super.onCreate(savedInstanceState);
    21         
    22         tableHost = this.getTabHost();
    23         
    24         LayoutInflater.from(this).inflate(R.layout.activity_main,tableHost.getTabContentView());
    25         
    26         ts1 = tableHost.newTabSpec("tab1");
    27         ts1.setIndicator("tab1");
    28         ts1.setContent(R.id.btn);
    29         
    30         ts2 = tableHost.newTabSpec("tab2");
    31         ts2.setIndicator("tab2", getResources().getDrawable(R.drawable.bg));
    32         ts2.setContent(R.id.et);      
    33         
    34         ts3 = tableHost.newTabSpec("tab3");
    35         ts3.setContent(R.id.layout);
    36         ts3.setIndicator("tab3", getResources().getDrawable(R.drawable.pg2));
    37         ts3.setContent(R.id.et);             
    38         
    39         tableHost.addTab(ts1);
    40         tableHost.addTab(ts2);
    41         tableHost.addTab(ts3);
    42         
    43         tableHost.setOnTabChangedListener(this);
    44         
    45         
    46 
    47     }
    48 
    49 
    50     @Override
    51     public boolean onCreateOptionsMenu(Menu menu) {
    52         // Inflate the menu; this adds items to the action bar if it is present.
    53         getMenuInflater().inflate(R.menu.main, menu);
    54         return true;
    55     }
    56 
    57 
    58     @Override
    59     public void onTabChanged(String arg0) {
    60         // TODO Auto-generated method stub
    61         if (arg0.equals("tab1")) {
    62             Toast.makeText(this, "分页1", Toast.LENGTH_LONG).show();
    63         } else if(arg0.equals("tab2")){
    64             Toast.makeText(this, "分页2", Toast.LENGTH_LONG).show();
    65         }else if(arg0.equals("tab3")){
    66             Toast.makeText(this, "分页3", Toast.LENGTH_LONG).show();
    67         }
    68     }
    69     
    70 }
    View Code

    关于不同Tab页面的View间如何通信后面再讲。

    ========个人网站:http://chendd.com/ 文章很多是上面搬过来的,以后都在个人网站上更新,有兴趣的可以移步☺========
  • 相关阅读:
    常见错误及解决方案
    使用7zip压解各种文件的经常使用命令
    《鸟哥的Linux私房菜-基础学习篇(第三版)》(六)
    一起talk C栗子吧(第一百二十四回:C语言实例--内置宏)
    逻辑学和计算理论相关概念
    书评第003篇:《0day安全:软件漏洞分析技术(第2版)》
    解释器模式
    面试复习重点——数据结构、操作系统、计算机网络、数据库。
    我们凭什么年薪达到30万以上?
    测试工作中的问题清单
  • 原文地址:https://www.cnblogs.com/aiguozhe/p/3546601.html
Copyright © 2020-2023  润新知