最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

FragmentTabHost使用方法詳解

 更新時(shí)間:2017年08月04日 10:07:55   作者:mChenys  
這篇文章主要為大家詳細(xì)介紹了Android中FragmentTabHost的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

FragmentTabHost是support-v包下提供的用于集成和管理Fragment頁(yè)面的組件.

今天要實(shí)現(xiàn)的效果圖如下:

這里寫圖片描述

整體結(jié)構(gòu)是MainActivity+5個(gè)模塊的Fragment.

MainActivity的布局如下:

<?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">
 <!--真正的內(nèi)容視圖,用于展示Fragment-->
 <FrameLayout
  android:id="@+id/real_tabcontent"
  android:layout_width="match_parent"
  android:layout_height="0dp"
  android:layout_weight="1"/>

 <!--tabhost,必須使用系統(tǒng)的id-->
 <android.support.v4.app.FragmentTabHost
  android:id="@android:id/tabhost"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  >
  <!--tabcontent,必須使用系統(tǒng)的id-->
  <FrameLayout
   android:id="@android:id/tabcontent"
   android:layout_width="0dp"
   android:layout_height="0dp"
   android:layout_weight="0"/>
 </android.support.v4.app.FragmentTabHost>

</LinearLayout>

每個(gè)tab的布局如下:

<?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="wrap_content"
    android:gravity="center"
    android:orientation="vertical">
 <!--tab圖片-->
 <ImageView
  android:id="@+id/iv_tab"
  android:layout_width="26dp"
  android:layout_height="26dp"
  />
 <!--tab名字-->
 <TextView
  android:id="@+id/tv_tab"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:layout_marginTop="1dp"
  android:textSize="12sp"/>
</LinearLayout>

MainActivity代碼如下:

package blog.csdn.net.mchenys.bsbdj.modul.main;

import android.content.res.ColorStateList;
import android.os.Bundle;
import android.support.v4.app.FragmentTabHost;
import android.text.TextUtils;
import android.view.View;
import android.widget.ImageView;
import android.widget.TabHost;
import android.widget.TextView;

import blog.csdn.net.mchenys.bsbdj.R;
import blog.csdn.net.mchenys.bsbdj.common.base.BaseActivity;
import blog.csdn.net.mchenys.bsbdj.modul.attention.view.AttentionFragment;
import blog.csdn.net.mchenys.bsbdj.modul.essence.view.EssenceFragment;
import blog.csdn.net.mchenys.bsbdj.modul.mine.view.MineFragment;
import blog.csdn.net.mchenys.bsbdj.modul.newpost.view.NewpostFragment;
import blog.csdn.net.mchenys.bsbdj.modul.publish.view.PublishFragment;
import blog.csdn.net.mchenys.bsbdj.mvp.presenter.impl.MvpBasePresenter;
/**
 * Created by mChenys on 2016/5/27.
 */
public class MainActivity extends BaseActivity {

 //定義數(shù)組來(lái)存放tab的圖片選擇器
 private int[] mTabImage = {R.drawable.main_bottom_essence_selector,
   R.drawable.main_bottom_latest_selector,
   R.drawable.main_bottom_writeposts_selector,
   R.drawable.main_bottom_news_selector,
   R.drawable.main_bottom_my_selector};

 //tab選項(xiàng)卡的文字
 private String[] mTabTitle = {"精華", "新帖", "", "關(guān)注", "我的"};

 //每個(gè)tab對(duì)應(yīng)的Fragment的字節(jié)碼對(duì)象
 private Class[] fragmentArray = {EssenceFragment.class, NewpostFragment.class,
   PublishFragment.class, AttentionFragment.class, MineFragment.class};

 @Override
 protected boolean isHomePage() {
  return true;
 }

 @Override
 public Integer getLayoutResId() {
  return R.layout.activity_main;
 }

 @Override
 public void initView() {
  //獲取tabhost
  FragmentTabHost tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost);
  //綁定tabContent
  tabHost.setup(this, getSupportFragmentManager(), R.id.real_tabcontent);
  //去掉分割線
  tabHost.getTabWidget().setDividerDrawable(null);
  for (int i = 0; i < fragmentArray.length; i++) {
   //綁定Fragment,添加到的FragmentTabHost
   //設(shè)置tab的名稱和view
   TabHost.TabSpec tabSpec = tabHost.
     newTabSpec(mTabTitle[i]).
     setIndicator(getTabItemView(i));
   Bundle bundle = new Bundle();
   bundle.putString("title", mTabTitle[i]);
   //添加tab和關(guān)聯(lián)對(duì)應(yīng)的fragment
   tabHost.addTab(tabSpec, fragmentArray[i], bundle);
   //設(shè)置tab的背景色
   tabHost.getTabWidget().
     getChildAt(i).
     setBackgroundColor(getResources().getColor(R.color.bgColor));
  }
  //默認(rèn)選中第一個(gè)tab
  tabHost.setCurrentTab(0);
  //設(shè)置tab的切換監(jiān)聽
  tabHost.setOnTabChangedListener(new TabHost.OnTabChangeListener() {
   @Override
   public void onTabChanged(String tabId) {
    //可以在這里監(jiān)聽tab的切換
   }
  });
 }

 //tab的字體選擇器
 ColorStateList mColorStateList;

 /**
  * 給Tab按鈕設(shè)置圖標(biāo)和文字
  */
 private View getTabItemView(int index) {
  View view = getLayoutInflater().inflate(R.layout.view_tab_indicator, null);
  ImageView imageView = (ImageView) view.findViewById(R.id.iv_tab);
  TextView textView = (TextView) view.findViewById(R.id.tv_tab);
  //設(shè)置圖片選擇器
  imageView.setImageResource(mTabImage[index]);
  //設(shè)置字體選擇器
  if (mColorStateList == null) {
   mColorStateList = getResources().
     getColorStateList(R.color.main_bottom_text_selector);
   textView.setTextColor(mColorStateList);
  }
  //設(shè)置tab的文字
  if (TextUtils.isEmpty(mTabTitle[index])) {
   //如果沒(méi)有名稱,則隱藏tab下的textView
   textView.setVisibility(View.GONE);
  } else {
   textView.setVisibility(View.VISIBLE);
   textView.setText(mTabTitle[index]);
  }
  return view;
 }


 @Override
 public void initListener() {

 }

 @Override
 public void initData() {

 }

 @Override
 public void reLoadData() {

 }

 @Override
 public void onClick(View v) {

 }

 @Override
 public MvpBasePresenter bindPresenter() {
  return null;
 }
}

最后附上字體選擇器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_selected="false" android:color="@color/main_bottom_text_normal" />
 <item android:state_selected="true" android:color="@color/main_bottom_text_select" />
</selector>

圖片選擇器有5個(gè),這里附上一個(gè),其他類似:

<?xml version="1.0" encoding="utf-8"?>
<selector
 xmlns:android="http://schemas.android.com/apk/res/android">
 <item android:state_selected="false" android:drawable="@drawable/main_bottom_essence_normal" />
 <item android:state_selected="true" android:drawable="@drawable/main_bottom_essence_press" />
</selector>

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android實(shí)現(xiàn)旋轉(zhuǎn),放大,縮小圖片的方法

    Android實(shí)現(xiàn)旋轉(zhuǎn),放大,縮小圖片的方法

    這篇文章主要介紹了Android實(shí)現(xiàn)旋轉(zhuǎn),放大,縮小圖片的方法,結(jié)合實(shí)例形式分析了Android基于Drawable針對(duì)圖片的縮放與旋轉(zhuǎn)等處理技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-10-10
  • Android入門教程之ListView的具體使用詳解

    Android入門教程之ListView的具體使用詳解

    列表作為最常用的控件之一,還是有必要好好學(xué)習(xí)的,本章以一個(gè)初學(xué)者的角度來(lái)學(xué)習(xí) ListView,ListView的屬性,以及BaseAdapter簡(jiǎn)單定義,至于ListView優(yōu)化這些, 我們一步步來(lái)
    2021-10-10
  • Flutter網(wǎng)絡(luò)請(qǐng)求的3種簡(jiǎn)單實(shí)現(xiàn)方法

    Flutter網(wǎng)絡(luò)請(qǐng)求的3種簡(jiǎn)單實(shí)現(xiàn)方法

    這篇文章主要給大家介紹了給大家Flutter網(wǎng)絡(luò)請(qǐng)求的3種簡(jiǎn)單實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Flutter具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Kotlin?協(xié)程思維模型的引入使用建立

    Kotlin?協(xié)程思維模型的引入使用建立

    這篇文章主要為大家介紹了Kotlin?協(xié)程思維模型的引入使用及建立詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • android監(jiān)控sim卡有沒(méi)有服務(wù)示例(sim卡管理)

    android監(jiān)控sim卡有沒(méi)有服務(wù)示例(sim卡管理)

    android監(jiān)聽SIM卡有沒(méi)有服務(wù),可以使用android.telephony.PhoneStateListener類來(lái)實(shí)現(xiàn),下面是一個(gè)簡(jiǎn)單的小例子,大家參考使用吧
    2014-01-01
  • Kotlin語(yǔ)言使用BroadcastReceiver示例介紹

    Kotlin語(yǔ)言使用BroadcastReceiver示例介紹

    Android開發(fā)的四大組件分別是:活動(dòng)(activity),用于表現(xiàn)功能;服務(wù)(service),后臺(tái)運(yùn)行服務(wù),不提供界面呈現(xiàn);廣播接受者(Broadcast Receive),勇于接收廣播;內(nèi)容提供者(Content Provider),支持多個(gè)應(yīng)用中存儲(chǔ)和讀取數(shù)據(jù),相當(dāng)于數(shù)據(jù)庫(kù),本篇著重介紹廣播組件
    2022-09-09
  • Android selinux策略文件的編譯與加載

    Android selinux策略文件的編譯與加載

    這篇文章主要為大家介紹了Android selinux策略文件的編譯與加載用法解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Android?Studio實(shí)現(xiàn)智能聊天

    Android?Studio實(shí)現(xiàn)智能聊天

    這篇文章主要為大家詳細(xì)介紹了Android?Studio實(shí)現(xiàn)智能聊天,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Android自定義單選多選下拉列表的實(shí)例代碼

    Android自定義單選多選下拉列表的實(shí)例代碼

    本篇文章主要介紹了Android自定義單選多選下拉列表的實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Android中利用App實(shí)現(xiàn)消息推送機(jī)制的代碼

    Android中利用App實(shí)現(xiàn)消息推送機(jī)制的代碼

    Android中利用App實(shí)現(xiàn)消息推送機(jī)制的代碼,需要的朋友可以參考下。
    2011-05-05

最新評(píng)論

轮台县| 北宁市| 泸西县| 浦城县| 夹江县| 新竹县| 高陵县| 夹江县| 乌审旗| 佛坪县| 成武县| 安国市| 衡东县| 抚远县| 河北区| 白银市| 汝阳县| 永寿县| 四平市| 河西区| 拜泉县| 舞钢市| 铅山县| 巴南区| 威远县| 将乐县| 潜山县| 巫山县| 姚安县| 莎车县| 扎鲁特旗| 泾源县| 高邮市| 金山区| 滁州市| 海淀区| 松潘县| 漠河县| 永仁县| 米脂县| 西贡区|