开发过程中我们经常会这样的需求,搭建项目框架的时候需要创建低下四个Tab,刚好项目空闲时间,再次为大家抽离了自己项目中封装的Tab 方便大家使用 调用,有很好的定制型,可以根据项目的需求自己实现自己想要的效果。
packagecom.fanwe.library.view;
importandroid.content.Context;
importandroid.graphics.Color;
importandroid.util.AttributeSet;
importandroid.widget.ImageView;
importandroid.widget.TextView;
importcom.fanwe.library.R;
importcom.fanwe.library.utils.SDViewBinder;
importcom.fanwe.library.view.select.SDSelectViewAuto;
public classSDTabMenuextendsSDSelectViewAuto
{
publicImageViewmIvTitle;
publicTextViewmTvTitle;
publicTextViewmTvNumbr;
publicSDTabMenu(Context context,AttributeSet attrs)
{
super(context,attrs);
init();
}
publicSDTabMenu(Context context)
{
super(context);
init();
}
@Override
protected voidinit()
{
setContentView(R.layout.view_tab_menu);
mIvTitle= (ImageView) findViewById(R.id.iv_title);
mTvTitle= (TextView) findViewById(R.id.tv_title);
mTvNumbr= (TextView) findViewById(R.id.tv_number);
addAutoView(mIvTitle,mTvNumbr,mTvTitle);
setDefaultConfig();
onNormal();
setTextTitleNumber(null);
super.init();
}
@Override
public voidsetDefaultConfig()
{
getViewConfig(mTvTitle).setTextColorNormal(Color.GRAY);
getViewConfig(mTvTitle).setTextColorSelected(mLibraryConfig.getmMainColor());
super.setDefaultConfig();
}
public voidsetTextTitleNumber(String content)
{
SDViewBinder.setTextViewsVisibility(mTvNumbr,content);
}
public voidsetTextTitle(String content)
{
SDViewBinder.setTextViewsVisibility(mTvTitle,content);
}
public voidsetBackgroundTextTitleNumber(intresId)
{
mTvNumbr.setBackgroundResource(resId);
}
public voidsetVisibilityTextTitleNumber(intvisibility){
mTvNumbr.setVisibility(visibility);
}
}
//布局如下
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:orientation="vertical">
android:id="@+id/act_main_fl_content"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
android:id="@+id/act_main_ll_bottom_menu"
android:layout_width="match_parent"
android:layout_height="50dp"
android:orientation="horizontal">
android:id="@+id/tab0"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/selector_white_gray_stroke_top"/>
android:id="@+id/tab1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/selector_white_gray_stroke_top"/>
android:id="@+id/tab2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/selector_white_gray_stroke_top"/>
android:id="@+id/tab3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:background="@drawable/selector_white_gray_stroke_top"/>
android:id="@+id/tab4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:visibility="gone"
android:background="@drawable/selector_white_gray_stroke_top"/>
//布局就是简单的一个线性布局包含了 一个帧布局和一个线性布局里面包含我们自定义的Tab,这种也比较方便,这样只是减少繁琐的添加取消有一定的灵活性
//接下来就是我们最主要的如何使用了
最基础的地方就省略
private voidinitBottom()
{
mTab0.setBackgroundTextTitleNumber(R.drawable.bg_number);
mTab1.setBackgroundTextTitleNumber(R.drawable.bg_number);
mTab2.setBackgroundTextTitleNumber(R.drawable.bg_number);
mTab3.setBackgroundTextTitleNumber(R.drawable.bg_number);
mTab4.setBackgroundTextTitleNumber(R.drawable.bg_number);
mTab0.setTextTitle(SDResourcesUtil.getString(R.string.home));
mTab1.setTextTitle(SDResourcesUtil.getString(R.string.supplier));
mTab2.setTextTitle(SDResourcesUtil.getString(R.string.shopcart));
mTab3.setTextTitle(SDResourcesUtil.getString(R.string.mine));
mTab4.setTextTitle(SDResourcesUtil.getString(R.string.more));
mTab0.getViewConfig(mTab0.mIvTitle).setImageNormalResId(R.drawable.button_home_close).setImageSelectedResId(R.drawable.butt_home_open);
mTab1.getViewConfig(mTab1.mIvTitle).setImageNormalResId(R.drawable.button_market_close).setImageSelectedResId(R.drawable.button_market_open);
mTab2.getViewConfig(mTab2.mIvTitle).setImageNormalResId(R.drawable.button_shopping_close).setImageSelectedResId(R.drawable.button_shopping_open);
mTab3.getViewConfig(mTab3.mIvTitle).setImageNormalResId(R.drawable.button_my_close).setImageSelectedResId(R.drawable.button_my_open);
mTab4.getViewConfig(mTab4.mIvTitle).setImageNormalResId(R.drawable.tab_4_normal).setImageSelectedResId(R.drawable.tab_4_press);
mTab0.getViewConfig(mTab0.mTvTitle).setTextColorNormalResId(R.color.text_home_menu_normal)
.setTextColorSelectedResId(R.color.text_home_menu_selected);
mTab1.getViewConfig(mTab1.mTvTitle).setTextColorNormalResId(R.color.text_home_menu_normal)
.setTextColorSelectedResId(R.color.text_home_menu_selected);
mTab2.getViewConfig(mTab2.mTvTitle).setTextColorNormalResId(R.color.text_home_menu_normal)
.setTextColorSelectedResId(R.color.text_home_menu_selected);
mTab3.getViewConfig(mTab3.mTvTitle).setTextColorNormalResId(R.color.text_home_menu_normal)
.setTextColorSelectedResId(R.color.text_home_menu_selected);
mTab4.getViewConfig(mTab4.mTvTitle).setTextColorNormalResId(R.color.text_home_menu_normal)
.setTextColorSelectedResId(R.color.text_home_menu_selected);
mViewManager.setListener(newSDSelectManagerListener()
{
@Override
public voidonNormal(intindex,SDTabMenu item)
{
}
@Override
public voidonSelected(intindex,SDTabMenu item)
{
mSelectedIndex= index;
switch(index)
{
case0:
click0();
mTab2.setVisibilityTextTitleNumber(View.GONE);
break;
case1:
click1();
mTab2.setVisibilityTextTitleNumber(View.GONE);
break;
case2:
click2();
mTab2.setVisibilityTextTitleNumber(View.VISIBLE);
break;
case3:
click3();
mTab2.setVisibilityTextTitleNumber(View.GONE);
break;
case4:
click4();
break;
default:
break;
}
}
});
SDTabMenu[] items =newSDTabMenu[] {mTab0,mTab1,mTab2,mTab3,mTab4};
mViewManager.setItems(items);
mViewManager.performClick(mSelectedIndex);
}
//对应你需要的Tab做相应的处理 显示隐藏 或者你可以在基类添加一些你需要的东西扩展。