标签:
1.布局实现上面是fragment下面是button的(默认切换在上面)FragmentTabHost包裹的FrameLayout也要写,不让它显示即可,FragmentTabHost内的所有id也要用系统的id
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <FrameLayout android:id="@+id/<span style="font-family: Arial, Helvetica, sans-serif;">activity_home_container</span><span style="font-family: Arial, Helvetica, sans-serif;">"</span> android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" /> <android.support.v4.app.FragmentTabHost android:id="@android:id/tabhost" android:layout_width="match_parent" android:layout_height="wrap_content" > <TabWidget android:id="@android:id/tabs" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:background="#FFF1F1F1" /> <FrameLayout android:id="@android:id/tabcontent" android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0" /> </android.support.v4.app.FragmentTabHost> </LinearLayout>
// 1. 初始化TabHost tabhost = (FragmentTabHost) findViewById(android.R.id.tabhost); tabhost.setup(this, getSupportFragmentManager(), R.id.activity_home_container); // 2. 新建TabSpec TabSpec spec = tabhost.newTabSpec(TAB_CHAT); chatIndicator = new TabIndicatorView(this); chatIndicator.setTabTitle("消息"); chatIndicator.setTabIcon(R.drawable.tab_icon_chat_normal, R.drawable.tab_icon_chat_focus); spec.setIndicator(chatIndicator); // 3. 添加TabSpec tabhost.addTab(spec, ChatFra.class, null); // 2. 新建TabSpec spec = tabhost.newTabSpec(TAB_CONTACT); contactIndicator = new TabIndicatorView(this); contactIndicator.setTabIcon(R.drawable.tab_icon_contact_normal, R.drawable.tab_icon_contact_focus); contactIndicator.setTabTitle("通讯录"); contactIndicator.setTabUnreadCount(10); spec.setIndicator(contactIndicator); // 3. 添加TabSpec tabhost.addTab(spec, ContactFra.class, null); // 2. 新建TabSpec spec = tabhost.newTabSpec(TAB_DISCOVER); discoverIndicator = new TabIndicatorView(this); discoverIndicator.setTabIcon(R.drawable.tab_icon_discover_normal, R.drawable.tab_icon_discover_focus); discoverIndicator.setTabTitle("发现"); discoverIndicator.setTabUnreadCount(10); spec.setIndicator(discoverIndicator); // 3. 添加TabSpec tabhost.addTab(spec, DiscoverFra.class, null); // 2. 新建TabSpec spec = tabhost.newTabSpec(TAB_ME); meIndicator = new TabIndicatorView(this); meIndicator.setTabIcon(R.drawable.tab_icon_me_normal, R.drawable.tab_icon_me_focus); meIndicator.setTabTitle("我"); meIndicator.setTabUnreadCount(10); spec.setIndicator(meIndicator); // 3. 添加TabSpec tabhost.addTab(spec, MeFra.class, null); // 去掉分割线 tabhost.getTabWidget().setDividerDrawable(android.R.color.white); // 初始化 tab选中 tabhost.setCurrentTabByTag(TAB_CHAT); chatIndicator.setTabSelected(true); // 设置tab切换的监听 tabhost.setOnTabChangedListener(this); } @Override public void onTabChanged(String tag) { chatIndicator.setTabSelected(false); contactIndicator.setTabSelected(false); discoverIndicator.setTabSelected(false); meIndicator.setTabSelected(false); if (TAB_CHAT.equals(tag)) { chatIndicator.setTabSelected(true); } else if (TAB_CONTACT.equals(tag)) { contactIndicator.setTabSelected(true); } else if (TAB_DISCOVER.equals(tag)) { discoverIndicator.setTabSelected(true); } else if (TAB_ME.equals(tag)) { meIndicator.setTabSelected(true); } }3.自定义的TabIndicator
public class TabIndicatorView extends RelativeLayout { private ImageView ivTabIcon; private TextView tvTabHint; private TextView tvTabUnRead; private int normalIconId; private int focusIconId; public TabIndicatorView(Context context) { this(context, null); } public TabIndicatorView(Context context, AttributeSet attrs) { super(context, attrs); // 将布局文件和 代码进行绑定 View.inflate(context, R.layout.tab_indicator, this); ivTabIcon = (ImageView) findViewById(R.id.tab_indicator_icon); tvTabHint = (TextView) findViewById(R.id.tab_indicator_hint); tvTabUnRead = (TextView) findViewById(R.id.tab_indicator_unread);//未读消息 setTabUnreadCount(0); } // 设置tab的title public void setTabTitle(String title) { tvTabHint.setText(title); } public void setTabTitle(int titleId) { tvTabHint.setText(titleId); } // 初始化图标 public void setTabIcon(int normalIconId, int focusIconId) { this.normalIconId = normalIconId; this.focusIconId = focusIconId; ivTabIcon.setImageResource(normalIconId); } // 设置未读数 public void setTabUnreadCount(int unreadCount) { if (unreadCount <= 0) { tvTabUnRead.setVisibility(View.GONE); } else { if (unreadCount <= 99) { tvTabUnRead.setText(unreadCount + ""); } else { tvTabUnRead.setText("99+"); } tvTabUnRead.setVisibility(View.VISIBLE); } } // 设置选中 public void setTabSelected(boolean selected) { if (selected) { ivTabIcon.setImageResource(focusIconId); } else { ivTabIcon.setImageResource(normalIconId); } } }
标签:
原文地址:http://blog.csdn.net/gaobaoshen1/article/details/51363723