zoukankan      html  css  js  c++  java
  • 自定义TAB

    package com.testTabActivity;

    import java.lang.reflect.Field;
    import android.app.Activity;
    import android.app.TabActivity;
    import android.os.Build;
    import android.os.Bundle;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.widget.TabHost;
    import android.widget.TabWidget;
    import android.widget.TextView;
    import android.widget.TabHost.OnTabChangeListener;

    public class testTabActivity extends TabActivity {
        
    /** Called when the activity is first created. */
        @Override
        
    public void onCreate(Bundle savedInstanceState) {
            
    super.onCreate(savedInstanceState);

            
    int width =45;
            
    int height =48;

            
    final TabHost tabs = getTabHost();
            
    final TabWidget tabWidget = tabs.getTabWidget();

            Field mBottomLeftStrip;
            Field mBottomRightStrip;

            LayoutInflater.from(
    this).inflate(R.layout.main, tabs.getTabContentView(), true);

            tabs.addTab(tabs.newTabSpec(
    "first tab")
                 .setIndicator(
    "news",getResources().getDrawable(R.drawable.efg))
                 .setContent(R.id.widget_layout_Blue));

            tabs.addTab(tabs.newTabSpec(
    "second tab")
             .setIndicator(
    "help",getResources().getDrawable(R.drawable.c))
             .setContent(R.id.widget_layout_green));

            tabs.addTab(tabs.newTabSpec(
    "second tab")
                 .setIndicator(
    "setting",getResources().getDrawable(R.drawable.e))
                 .setContent(R.id.widget_layout_red));



            
    for (int i =0; i < tabWidget.getChildCount(); i++) {
                
    /**
                 * 设置高度、宽度,不过宽度由于设置为fill_parent,在此对它没效果
                 
    */
                tabWidget.getChildAt(i).getLayoutParams().height 
    = height;
                tabWidget.getChildAt(i).getLayoutParams().width 
    = width;


             
    /**
              * 设置tab中标题文字的颜色,不然默认为黑色
              
    */
              
    final TextView tv = (TextView) tabWidget.getChildAt(i).findViewById(android.R.id.title);

              tv.setTextColor(
    this.getResources().getColorStateList(android.R.color.white));




                
    /**
                 * 此方法是为了去掉系统默认的色白的底角
                 *
                 * 在 TabWidget中mBottomLeftStrip、mBottomRightStrip
                 * 都是私有变量,但是我们可以通过反射来获取
                 *
                 * 由于还不知道Android 2.2的接口是怎么样的,现在先加个判断好一些
                 
    */
          
    if (Float.valueOf(Build.VERSION.RELEASE) <= 2.1) {
                   
    try {
                      mBottomLeftStrip 
    = tabWidget.getClass().getDeclaredField ("mBottomLeftStrip");
                      mBottomRightStrip 
    = tabWidget.getClass().getDeclaredField ("mBottomRightStrip");
                      
    if(!mBottomLeftStrip.isAccessible()) {
                        mBottomLeftStrip.setAccessible(
    true);
                      }
                      
    if(!mBottomRightStrip.isAccessible()){
                        mBottomRightStrip.setAccessible(
    true);
                      }
                     mBottomLeftStrip.set(tabWidget, getResources().getDrawable (R.drawable.linee));
                     mBottomRightStrip.set(tabWidget, getResources().getDrawable (R.drawable.linee));

                   } 
    catch (Exception e) {
                     e.printStackTrace();
                   }
             } 
    else {
            
             }
            View vvv 
    = tabWidget.getChildAt(i);
      
    if(tabs.getCurrentTab()==i){
              vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.shine));
      }
      
    else {
              vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.seven));
      }

            }
            
    /**
             * 当点击tab选项卡的时候,更改当前的背景
             
    */
            tabs.setOnTabChangedListener(
    new OnTabChangeListener(){
       @Override
       
    public void onTabChanged(String tabId) {
        
    // TODO Auto-generated method stub
        for (int i =0; i < tabWidget.getChildCount(); i++) {
         View vvv 
    = tabWidget.getChildAt(i);
         
    if(tabs.getCurrentTab()==i){
                 vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.shine));
         }
         
    else {
                 vvv.setBackgroundDrawable(getResources().getDrawable(R.drawable.seven));
         }
        }
       }});

        }

    }
  • 相关阅读:
    Zabbix-Agent在主动模式启动服务后,提示no active checks on server [139.219.xx.xx:10051]: host [139.219.xx.xx] not found
    Linux中Sed的用法
    服务器监控软件有哪些?
    Linux和Windows中查看端口占用情况
    Window10中创建目录连接点
    C#中使用RabbitMQ收发队列消息
    ExtJs4.2中Tab选项卡的右击关闭其它和关闭当前功能不准确的解决方法
    Redis中取得所有Key、过期时间配置与获取、Key过期通知。
    使用Phantomjs和ChromeDriver添加Cookies的方法
    FasterRcnn训练数据集参数配置
  • 原文地址:https://www.cnblogs.com/tt_mc/p/1744378.html
Copyright © 2011-2022 走看看