在开发商城上中时为了实现底部导航栏使用了fragmentTabHost方法,总结如下:
1、Activity必须继承fragmentActivity方法。
2.必须调用setup()方法
3.添加TabSpec
具体代码如下:
主要布局:
activity_main:
<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" tools:context=".MainActivity" android:orientation="vertical"> <FrameLayout android:id="@+id/realtabcontent" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1" android:background="@color/colorAccent" /> <android.support.v4.app.FragmentTabHost android:id="@android:id/tabhost" android:layout_width="fill_parent" android:layout_height="wrap_content" > <FrameLayout android:id="@android:id/tabcontent" android:layout_width="0dp" android:layout_height="0dp" android:layout_weight="0" /> </android.support.v4.app.FragmentTabHost></LinearLayout>
主要代码逻辑:
public class MainActivity extends AppCompatActivity { private FragmentTabHost mTabHost; private LayoutInflater mInflater; private List<Tab> mTabs = new ArrayList<>(5); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initTab(); } private void initTab() { Tab tab_home = new Tab(HomeFragment.class,R.string.home,R.mipmap.icon_home); Tab tab_hot = new Tab(HotFragment.class,R.string.hot,R.mipmap.icon_hot); Tab tab_category = new Tab(CategoryFragment.class,R.string.catagory,R.mipmap.icon_discover); Tab tab_cart = new Tab(CartFragment.class,R.string.cart,R.mipmap.icon_cart); Tab tab_mine= new Tab(MineFragment.class,R.string.mine,R.mipmap.icon_user); mTabs.add(tab_home); mTabs.add(tab_hot); mTabs.add(tab_category); mTabs.add(tab_cart); mTabs.add(tab_mine); mInflater = LayoutInflater.from(this); mTabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); mTabHost.setup(this,getSupportFragmentManager(),R.id.realtabcontent); for(Tab tab : mTabs){ TabHost.TabSpec tabSpec = mTabHost.newTabSpec(getString(tab.getTitle())); tabSpec.setIndicator( buildindictor(tab)); mTabHost.addTab(tabSpec,tab.getFragment(),null); } } private View buildindictor(Tab tab){ View view = mInflater.inflate(R.layout.tab_indication,null); ImageView img = (ImageView) findViewById(R.id.icon_tab); TextView txt = (TextView) findViewById(R.id.txt_indicator); img.setBackgroundResource(tab.getIcon()); txt.setText(tab.getTitle()); return view; }}
在新建CartFragment:\CategoryFragment;\.HomeFragment;\.HotFragment;\.MineFragmen类,都必须继承v4包下的Fragmentpublic class HotFragment extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_hot,container,false); }}
时间: 2024-10-16 15:40:55