layout
<FrameLayout
android:id="@+id/main_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/view_line"/>
Activity
onCreate方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvMain = (TextView) findViewById(R.id.tv_main);
tvMain.setSelected(true);
tvDynamic = (TextView) findViewById(R.id.tv_dynamic);
homeFragment = new HomeFragment();
getSupportFragmentManager().beginTransaction().add(R.id.main_container,homeFragment).commit();
tvMain.setOnClickListener(tabClickListener);
tvDynamic.setOnClickListener(tabClickListener);
}
private View.OnClickListener tabClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (v.getId() != currentId) {
changeSelect(v.getId());
changeFragment(v.getId());
currentId = v.getId();
}
}
};
改变fragment的显示
private void changeFragment(int resId) {
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
hideFragments(transaction);
if(resId==R.id.tv_main){
if(homeFragment==null){
homeFragment = new HomeFragment();
transaction.add(R.id.main_container,homeFragment);
}else {
transaction.show(homeFragment);
}
}else if(resId==R.id.tv_dynamic){
if(dynamicFragment==null){
dynamicFragment = new DynamicFragment();
transaction.add(R.id.main_container,dynamicFragment);
}else {
transaction.show(dynamicFragment);
}
}
transaction.commit();
}
}
隐藏所有fragment
private void hideFragments(FragmentTransaction transaction){
if (homeFragment != null)
transaction.hide(homeFragment);
if (dynamicFragment != null)
transaction.hide(dynamicFragment);
}
改变TextView选中颜色
private void changeSelect(int resId){
tvMain.setSelected(false);
tvDynamic.setSelected(false);
switch (resId) {
case R.id.tv_main:
tvMain.setSelected(true);
break;
case R.id.tv_dynamic:
tvDynamic.setSelected(true);
break;
}
}
选中和未选中效果
<TextView
android:id="@+id/tv_main"
// 图片选择器
android:drawableTop="@drawable/tab_item_main_img_selector"
// 图片和文字的间距
android:drawablePadding="@dimen/main_tab_item_image_and_text"
// 是否可以为焦点
android:focusable="true"
// 文字颜色选择器
android:textColor="@drawable/tabitem_txt_sel" />
tab_item_main_img_selector 图片选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/icon_tab_main_select" android:state_selected="true"/>
<item android:drawable="@drawable/icon_tab_main_normal"/>
</selector>
tabitem_txt_sel 文字颜色选择器
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/main_tab_item_text_select" android:state_selected="true"/>
<item android:color="@color/main_tab_item_text_normal"/>
</selector>