package com.wasu.cs.widget; import android.content.Context; import android.util.AttributeSet; import android.view.LayoutInflater; import android.view.View; import android.view.ViewTreeObserver; import android.widget.HorizontalScrollView; import com.wasu.cs.adapter.ContAdapter; import com.wasu.cs.widget.TabLinearLayout.OnItemFocusedListener; import cn.com.wasu.main.AppUtil; import cn.com.wasu.main.R; /** * * @ClassName: MainTabBar * @Description: 首页标签区TabBar控件 * @author 海迪 * @date 2015年6月16日 下午12:28:16 * */ public class MainTabBar extends HorizontalScrollView { private TabLinearLayout tabBox; private boolean isFirstLoad = false; private ContAdapter contAdapter; public MainTabBar(Context context) { super(context); init(context); } public MainTabBar(Context context, AttributeSet attrs) { super(context, attrs); init(context); } public MainTabBar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context); } /** * * @author 海迪 * @Title: init * @Description: 初始化, 引入布局文件,并添加监听事件 * @param @param context * @return void * @throws * * @param context */ private void init(Context context) { LayoutInflater.from(context).inflate(R.layout.main_tab_bar, this); setHorizontalScrollBarEnabled(false); setVerticalScrollBarEnabled(false); tabBox = (TabLinearLayout) findViewById(R.id.tab_box); tabBox.setOnItemFocusedListener(new OnItemFocusedListener() { @Override public void OnItemFocused(MainTabItem focusItem, int index) { if(onItemSelectedListener != null) { onItemSelectedListener.onItemSelected(focusItem, index); } } }); ViewTreeObserver vto = this.getViewTreeObserver(); /** * 监听Draw之前,设置tabBox的宽度 */ vto.addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() { public boolean onPreDraw() { if(!isFirstLoad) { tabBox.setMinimumWidth(getMeasuredWidth()); isFirstLoad = true; } return true; } }); } public void addView(View child) { tabBox.addView(child); } public void addView(View child, int index) { tabBox.addView(child, index); } public void removeView(View child) { tabBox.removeView(child); } public void removeViewAt(int index) { tabBox.removeViewAt(index); } public void setAdapter(ContAdapter contAdapter) { this.contAdapter = contAdapter; initChildControls(); } /** * * @author 海迪 * @Title: initChildControls * @Description: 生成并布局Item的位置 * @param * @return void * @throws * */ private void initChildControls() { int count = contAdapter.getCount(); View view = null; MainTabItem tabItem = null; int index = 0; MainTabItem firstItem = null; MainTabItem lastItem = null; for(int i=0; i