• Tab+Fragment


    MainActivity.java

    package com.example.tabhostdemo;
    import java.util.ArrayList;
    
    import android.graphics.Color;
    import android.os.Bundle;
    import android.support.v4.app.Fragment;
    import android.support.v4.app.FragmentActivity;
    import android.support.v4.app.FragmentTabHost;
    import android.view.LayoutInflater;
    import android.view.Menu;
    import android.view.View;
    import android.widget.FrameLayout;
    import android.widget.ImageView;
    import android.widget.TabHost.OnTabChangeListener;
    import android.widget.TabHost.TabSpec;
    import android.widget.TabWidget;
    import android.widget.TextView;
    
    
    
    public class MainActivity extends FragmentActivity implements OnTabChangeListener{
    
    	private FragmentTabHost tabHost;
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_main);
    		tabHost=(FragmentTabHost)super.findViewById(android.R.id.tabhost);
    		tabHost.setup(this,super.getSupportFragmentManager()
    				,R.id.contentLayout);
    		tabHost.getTabWidget().setDividerDrawable(null);
    		tabHost.setOnTabChangedListener(this);
    		initTab();
    
    	}
    	
    	private void initTab(){
    		String tabs[]=TabDb.getTabsTxt();
    		for(int i=0;i<tabs.length;i++){
    			TabSpec tabSpec=tabHost.newTabSpec(tabs[i]).setIndicator(getTabView(i));
    			tabHost.addTab(tabSpec,TabDb.getFragments()[i],null);
    			tabHost.setTag(i);
    		}
    	}
    	
    	private View getTabView(int idx){
    		View view=LayoutInflater.from(this).inflate(R.layout.footer_tabs,null);
    		((TextView)view.findViewById(R.id.tvTab)).setText(TabDb.getTabsTxt()[idx]);
    		if(idx==0){
    			
    			((TextView)view.findViewById(R.id.tvTab)).setTextColor(Color.RED);
    			((ImageView)view.findViewById(R.id.ivImg)).setImageResource(TabDb.getTabsImgLight()[idx]);
    		}else{
    			((ImageView)view.findViewById(R.id.ivImg)).setImageResource(TabDb.getTabsImg()[idx]);
    		}
    		return view;
    	}
    	@Override
    	public boolean onCreateOptionsMenu(Menu menu) {
    		// Inflate the menu; this adds items to the action bar if it is present.
    		getMenuInflater().inflate(R.menu.main, menu);
    		return true;
    	}
    
    	@Override
    	public void onTabChanged(String tabId) {
    		// TODO Auto-generated method stub
    		updateTab();
    
    	}
    	private void updateTab(){
    		TabWidget tabw=tabHost.getTabWidget();
    		for(int i=0;i<tabw.getChildCount();i++){
    			View view=tabw.getChildAt(i);
    			ImageView iv=(ImageView)view.findViewById(R.id.ivImg);
    			if(i==tabHost.getCurrentTab()){
    				((TextView)view.findViewById(R.id.tvTab)).setTextColor(Color.RED);
    				iv.setImageResource(TabDb.getTabsImgLight()[i]);
    			}else{
    				((TextView)view.findViewById(R.id.tvTab)).setTextColor(getResources().getColor(R.color.foot_txt_gray));
    				iv.setImageResource(TabDb.getTabsImg()[i]);
    			}
    			
    		}
    	}
    
    }
    

     main_activity.xml

    <LinearLayout  xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        tools:context=".MainActivity" >
        <FrameLayout  android:id="@+id/contentLayout"
             android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
            
        </FrameLayout>
    
         <android.support.v4.app.FragmentTabHost
             android:id="@android:id/tabhost"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
             android:background="#F6F6F6"
             >
             <FrameLayout android:id="@android:id/tabcontent"
                 android:layout_height="0dp" android:layout_width="0dp"
                 />
         </android.support.v4.app.FragmentTabHost>
    
    </LinearLayout>

    TabDb.java

    package com.example.tabhostdemo;
    
    import com.example.fragment.FoundFragment;
    import com.example.fragment.NewsFragment;
    import com.example.fragment.OwnerFragment;
    import com.example.fragment.ReadFragment;
    import com.example.fragment.VideoFragment;
    
    
    
    
    
    
    
    public class TabDb {
        public static String[] getTabsTxt(){
            String[] tabs={"新闻","阅读","试听","发现",""};
            return tabs;
        }
        public static int[] getTabsImg(){
            int[] ids={R.drawable.foot_news_normal,R.drawable.foot_read_normal,R.drawable.foot_vdio_normal,R.drawable.foot_fond_normal,R.drawable.foot_out_normal};
            return ids;
        }
        public static int[] getTabsImgLight(){
            int[] ids={R.drawable.foot_news_light,R.drawable.foot_read_light,R.drawable.foot_vdio_light,R.drawable.foot_found_light,R.drawable.foot_out_light};
            return ids;
        }
        public static Class[] getFragments(){
            Class[] clz={NewsFragment.class,ReadFragment.class,VideoFragment.class,FoundFragment.class,OwnerFragment.class};
            return clz;
        }
    }

    footer_tabs.xml

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" 
        android:gravity="center"
        android:padding="5dp"
        android:background="#F6F6F6"
        >
    
        <ImageView
            android:id="@+id/ivImg"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
           />
    
        <TextView
            android:id="@+id/tvTab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/ivImg"
          	android:textColor="#AEAEAE"
            android:text="新闻" android:layout_marginTop="2dp"/>
    
    </RelativeLayout>
    
  • 相关阅读:
    Eclipse Java开发环境配置 + memcached + maven
    sqlserver数据库自动备份
    从表A中选择部分字段插入到表B
    电信IOT平台关于产品profile插件的添加流程
    SQLServer查询耗时sql语句
    net core 包管理
    byte[] 截串操作
    关于kafka启动失败问题
    springboot 搭建maven项目
    C# MongoDB学习之路(一)
  • 原文地址:https://www.cnblogs.com/g-sheng/p/5814893.html
Copyright © 2020-2023  润新知