FragmentTabHost+FrameLayout

Android 你或许不知道的另外一种首页导航布局FragmentTabHost+FrameLayout

有问题可以QQ讨论:1070800492

FragmentTabHost是安卓V4下的一种控件:布局是:android.support.v4.app.FragmentTabHost,喜欢的盆友可以直接去看他的源码,这里我就不详细介绍了(其实我也没看,【丶汗】)
难度:初级 适用人群:新手 适用地方:首页导航功能按钮
接下来不罗嗦,直接讲解如何使用

<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/frameLayout"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"></FrameLayout>

    <android.support.v4.app.FragmentTabHost
        android:id="@+id/tabHost"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">

    </android.support.v4.app.FragmentTabHost>
</LinearLayout>
  • 布局是我们经常简单的导航栏+FrameLayout布局样式,就不多说了下面是精华代码
  private void initView() {
        fragmentTabHost = (FragmentTabHost) findViewById(R.id.tabHost);
        mFragmentTitles = getResources().getStringArray(R.array.fragment_titles);                   //String[]    mFragmentTitles
		mFragmentTabHost = (FragmentTabHost) findViewById(R.id.tabhost);                            //FragmentTabHost mFragmentTabHost
		mFragmentTabHost.setup(this, getSupportFragmentManager(), R.id.frame_content);              //给tab设备对应的视图
		for (int i = 0; i < mFragmentTitles.length; i++) {
			//给每一个tab设备图标和文字内容
			TabSpec ts = mFragmentTabHost.newTabSpec(mFragmentTitles[i]);
			ts.setIndicator(mFragmentTitles[i]);
			switch (i) {
				case FRAGMENT_SCAN:
					mFragmentTabHost.addTab(ts, ScanFragment.class, null);                             //按钮添加到tab选项中
					mFragmentTabHost.getTabWidget().getChildAt(i).setBackgroundResource(R.color.black);//设备tab按钮背景
					break;
				case FRAGMENT_CONNECTED:
					mFragmentTabHost.addTab(ts, ConnectedFragment.class, null);
					break;
			}
        updateTab(fragmentTabHost);
		}

   /**
     * 更新Tab标签的颜色,和字体的颜色
     *
     * @param tabHost
     */
    private void updateTab(final TabHost tabHost) {
        for (int i = 0; i < tabHost.getTabWidget().getChildCount(); i++) {
            View view = tabHost.getTabWidget().getChildAt(i);
            TextView tv = (TextView) tabHost.getTabWidget().getChildAt(i).findViewById(android.R.id.title);
            tv.setTextSize(16);
            tv.setTypeface(Typeface.SERIF, 2); // 设置字体和风格
            if (tabHost.getCurrentTab() == i) {//选中
                tv.setTextColor(this.getResources().getColorStateList(android.R.color.black));
            } else {//不选中
                tv.setTextColor(this.getResources().getColorStateList(android.R.color.white));
            }
        }
    }

  • 可能有的童鞋在复制的时候发现:R.array.fragment_title这是个神马?不急往下看
        <!--在资源文件声明导航功能的名称-->
       <string-array name="fragment_title">
        <item>功能一</item>
        <item>功能二</item>
        <item>功能三</item>
      </string-array>
      
  • 我的代码(/哭)拿去不谢。。。 题外话:当然一般在写fragment的时候最好写一个BaseFragement把公共的方法和方法写在里面,用起来爽歪歪。

题外话:谢谢大家观看,有不足之处欢迎大家一起讨论;码字不易,大家喜欢,麻烦点赞哦。


灵魂三问:

  • 有没有觉得技术得不到系统的提升,技术成长慢?
  • 有没面试懵逼,升职加薪难?
  • 有没有想过去大一点的世界看看?

有期望JAVA技术巩固的、Android知识进阶的、期望升职加薪的、Android面试技巧的大厂面试真题的;大家可以加我QQ哦:1070800492。我们一起学习,一起进步!

重要的事情说三遍:

  • 学习、挣钱、自由
  • 学习、挣钱、自由
  • 学习、挣钱、自由

疫情当下,唯有自强

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值