国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Tablayout和ViewPager的結合使用Tablayout標題右上角加標記

2019-11-09 16:13:21
字體:
來源:轉載
供稿:網友

目前項目中用到Tablayout和ViewPager的結合使用,本來這個很簡單可以實現,但是項目要求Tablayout標題右上角加數字標記。這就不好弄了,怎么辦呢,只能給標題重新設置布局,下面就講講給Tablayout標題重設布局的過程。

之前結合RecyclerView的使用http://blog.csdn.net/pengyu1801/article/details/51172254

核心實現

import android.os.Bundle;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.view.ViewParent;import java.util.ArrayList;import java.util.List;/** * 類名: * 類描述:實現TabLayout + viewpager + fragment 并TabLayout標題右上角有數字標記 * 創建人:fly * 創建日期: 2017/2/2. * 版本:V1.0 */public class MainActivity extends AppCompatActivity implements View.OnClickListener { PRivate List<String> mPageTitleList = new ArrayList<String>(); private List<Fragment> mFragmentList = new ArrayList<Fragment>(); private List<Integer> mBadgeCountList = new ArrayList<Integer>(); private List<BadgeView> mBadgeViews; private SimpleFragmentPagerAdapter mPagerAdapter; private TabLayout mTabLayout; private ViewPager mViewPager; private int count = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initFragments(); initView(); } private void initFragments() { // 初始化標題 mPageTitleList.add("Tab1"); mPageTitleList.add("Tab2"); mPageTitleList.add("Tab3"); // 初始化標題右上角的數字 mBadgeCountList.add(6); mBadgeCountList.add(count++); mBadgeCountList.add(166); // 初始化對應的fragment for (int i = 0; i < mPageTitleList.size(); i++) { mFragmentList.add(PageFragment.getInstance(mPageTitleList.get(i))); } } private void initView() { findViewById(R.id.btn_add_badge).setOnClickListener(this); mTabLayout = (TabLayout) findViewById(R.id.tab_layout); mViewPager = (ViewPager) findViewById(R.id.view_pager); mPagerAdapter = new SimpleFragmentPagerAdapter(this, getSupportFragmentManager(), mFragmentList, mPageTitleList, mBadgeCountList); mViewPager.setAdapter(mPagerAdapter); mTabLayout.setupWithViewPager(mViewPager);// initBadgeViews(); setUpTabBadge(); } /**初始化標題右上角標記*/// private void initBadgeViews() {// if (mBadgeViews == null) {// mBadgeViews = new ArrayList<>();// for (int i = 0; i < mFragmentList.size(); i++) {// BadgeView tmp = new BadgeView(this);// tmp.setBadgeMargin(0, 6, 10, 0);// tmp.setTextSize(10);// mBadgeViews.add(tmp);// }// }// } /** * 設置Tablayout上的標題的角標 */ private void setUpTabBadge() { // 1. 最簡單// for (int i = 0; i < mFragmentList.size(); i++) {// mBadgeViews.get(i).setTargetView(((ViewGroup) mTabLayout.getChildAt(0)).getChildAt(i));// mBadgeViews.get(i).setText(formatBadgeNumber(mBadgeCountList.get(i)));// } // 2. 最實用 for (int i = 0; i < mFragmentList.size(); i++) { TabLayout.Tab tab = mTabLayout.getTabAt(i); // 更新Badge前,先remove原來的customView,否則Badge無法更新 View customView = tab.getCustomView(); if (customView != null) { ViewParent parent = customView.getParent(); if (parent != null) { ((ViewGroup) parent).removeView(customView); } } // 更新CustomView tab.setCustomView(mPagerAdapter.getTabItemView(i)); } // 需加上以下代碼,不然會出現更新Tab角標后,選中的Tab字體顏色不是選中狀態的顏色 mTabLayout.getTabAt(mTabLayout.getSelectedTabPosition()).getCustomView().setSelected(true); } @Override public void onClick(View v) { mBadgeCountList.set(1, count++); setUpTabBadge(); }}import android.os.Bundle;import android.support.design.widget.TabLayout;import android.support.v4.app.Fragment;import android.support.v4.view.ViewPager;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewGroup;import android.view.ViewParent;import java.util.ArrayList;import java.util.List;/** * 類名: * 類描述:實現TabLayout + viewpager + fragment 并TabLayout標題右上角有數字標記 * 創建人:fly * 創建日期: 2017/2/2. * 版本:V1.0 */public class MainActivity extends AppCompatActivity implements View.OnClickListener { private List<String> mPageTitleList = new ArrayList<String>(); private List<Fragment> mFragmentList = new ArrayList<Fragment>(); private List<Integer> mBadgeCountList = new ArrayList<Integer>(); private List<BadgeView> mBadgeViews; private SimpleFragmentPagerAdapter mPagerAdapter; private TabLayout mTabLayout; private ViewPager mViewPager; private int count = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initFragments(); initView(); } private void initFragments() { // 初始化標題 mPageTitleList.add("Tab1"); mPageTitleList.add("Tab2"); mPageTitleList.add("Tab3"); // 初始化標題右上角的數字 mBadgeCountList.add(6); mBadgeCountList.add(count++); mBadgeCountList.add(166); // 初始化對應的fragment for (int i = 0; i < mPageTitleList.size(); i++) { mFragmentList.add(PageFragment.getInstance(mPageTitleList.get(i))); } } private void initView() { findViewById(R.id.btn_add_badge).setOnClickListener(this); mTabLayout = (TabLayout) findViewById(R.id.tab_layout); mViewPager = (ViewPager) findViewById(R.id.view_pager); mPagerAdapter = new SimpleFragmentPagerAdapter(this, getSupportFragmentManager(), mFragmentList, mPageTitleList, mBadgeCountList); mViewPager.setAdapter(mPagerAdapter); mTabLayout.setupWithViewPager(mViewPager);// initBadgeViews(); setUpTabBadge(); } /**初始化標題右上角標記*/// private void initBadgeViews() {// if (mBadgeViews == null) {// mBadgeViews = new ArrayList<>();// for (int i = 0; i < mFragmentList.size(); i++) {// BadgeView tmp = new BadgeView(this);// tmp.setBadgeMargin(0, 6, 10, 0);// tmp.setTextSize(10);// mBadgeViews.add(tmp);// }// }// } /** * 設置Tablayout上的標題的角標 */ private void setUpTabBadge() { // 1. 最簡單// for (int i = 0; i < mFragmentList.size(); i++) {// mBadgeViews.get(i).setTargetView(((ViewGroup) mTabLayout.getChildAt(0)).getChildAt(i));// mBadgeViews.get(i).setText(formatBadgeNumber(mBadgeCountList.get(i)));// } // 2. 最實用 for (int i = 0; i < mFragmentList.size(); i++) { TabLayout.Tab tab = mTabLayout.getTabAt(i); // 更新Badge前,先remove原來的customView,否則Badge無法更新 View customView = tab.getCustomView(); if (customView != null) { ViewParent parent = customView.getParent(); if (parent != null) { ((ViewGroup) parent).removeView(customView); } } // 更新CustomView tab.setCustomView(mPagerAdapter.getTabItemView(i)); } // 需加上以下代碼,不然會出現更新Tab角標后,選中的Tab字體顏色不是選中狀態的顏色 mTabLayout.getTabAt(mTabLayout.getSelectedTabPosition()).getCustomView().setSelected(true); } @Override public void onClick(View v) { mBadgeCountList.set(1, count++); setUpTabBadge(); }}

源碼下載


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 嘉禾县| 仲巴县| 方城县| 茌平县| 资溪县| 桑日县| 德化县| 苍山县| 崇州市| 彭阳县| 富顺县| 龙里县| 得荣县| 合川市| 柳江县| 万年县| 安岳县| 榆林市| 潢川县| 衡东县| 莱西市| 葫芦岛市| 保靖县| 丹东市| 黑龙江省| 珲春市| 瑞安市| 阜阳市| 华坪县| 芒康县| 青浦区| 武宁县| 孟连| 泰来县| 德安县| 遂川县| 阿合奇县| 江油市| 元朗区| 集贤县| 集贤县|