TabLayout自定義總結

2021-10-18 04:26:19 字數 3738 閱讀 5661

2、取消選中水波紋效果:

參考:官方文件:

2、自定義tabitem 布局:kd_enet_tab_item.xml

<?xml version="1.0" encoding="utf-8"?>

3、**控制選中字型的樣式(粗細、顏色等)

private void inittab1() ;

tablayout mtablayout1 = nviewdatabinding.tablayout1;

//tablayout的基本使用

for (int i = 0; i < mtitles1.length; i++)

//初始值預設選中

updatetabtextview(mtablayout1.gettabat(mtablayout1.getselectedtabposition()),

true, r.color.kd_enet_cl_3f78df, r.color.kd_enet_cl_333);

mtablayout1.addontabselectedlistener(new tablayout.ontabselectedlistener()

@override

public void ontabunselected(tablayout.tab tab)

@override

public void ontabreselected(tablayout.tab tab)

});}/**

* 使用自定義的item布局

*/

private view gettabview(int currentposition, string strings)

/*** 每次選擇更新item樣式

*/private void updatetabtextview(tablayout.tab tab, boolean isselect, int textselectcolor, int textunselectcolor) else

}

//這些樣式設定不會生效了
參考:tablayout選中加粗

1、效果圖:

2、需求:圓角指示器,控制寬高:

3、自定義樣式:r.drawable.kd_enet_indicator_14.xml

<?xml version="1.0" encoding="utf-8"?>

4、使用:

1、需求:tablayout每個tab選中背景不一樣:左側圓角、中間方塊、右側圓角。

2、頁面布局:

3、**控制每個item的樣式:

private final string titlearr = ;

private final int selectedarr = ;

private final int unselectedarr = ;

private tablayout.ontabselectedlistener ontabselectedlistener;

/*** 導航欄布局:

*/private void initlayout()

@override

public int getcount()

@nullable

@override

public charsequence getpagetitle(int position)

});nviewdatabinding.viewpager.setoffscreenpagelimit(2);

nviewdatabinding.tablayout.setupwithviewpager(nviewdatabinding.viewpager);

// 注意:這個方法需要放在setupwithviewpager()後面

for (int i = 0; i < nviewdatabinding.tablayout.gettabcount(); i++)

ontabselectedlistener = new tablayout.ontabselectedlistener()

tabview.findviewbyid(r.id.tabicon).setbackgroundresource(selectedarr[tab.getposition()]);

//設定選中字型顏色

textview textview = tabview.findviewbyid(r.id.tabtext);

textview.settextcolor(contextcompat.getcolor(getcontext(), r.color.theme_color));

settabbackground(tab, true);

}@override

public void ontabunselected(tablayout.tab tab)

tabview.findviewbyid(r.id.tabicon).setbackgroundresource(unselectedarr[tab.getposition()]);

//設定未選中字型顏色

textview textview = tabview.findviewbyid(r.id.tabtext);

textview.settextcolor(contextcompat.getcolor(getcontext(), r.color.cl_666));

settabbackground(tab, false);

}@override

public void ontabreselected(tablayout.tab tab)

};nviewdatabinding.tablayout.addontabselectedlistener(ontabselectedlistener);

settabbackground(nviewdatabinding.tablayout.gettabat(default_position), true);

}

/** * 使用自定義的view布局

* * @param position

* @return

*/private view gettabview(int position) else

return v;

}/**

* tablayout每個tab選中背景不一樣。

* * * @param tab

* @param selected

*/private void settabbackground(tablayout.tab tab, boolean selected) else

break;

case 1:

if (selected) else

break;

case 2:

if (selected) else

break;

}viewcompat.setbackground(tab.view, drawable);

}

TabLayout自定義點選事件,最新

前言 最近開發的android專案中,需要根據當前tab來做相應的事件處理。開始通過給 tablayout 新增 addontabselectedlistener 監聽的方式來解決 如下 但是發現這個方法不夠靈活,在頁面跳轉的時候會出現沒有tab被選中,不能在 ontabselected 進行相應事...

乙個工具類實現自定義Tablayout的下劃線寬度

只改變tablayout的下劃線的寬度,只需要乙個工具類就可以可滿足 1 寫個工具類 封裝 author fx date 2018 07 19 11 11 fuction 使用工具類友好的修改系統tablayout 下劃線寬度 public class tablayoututil catch nos...

自定義View的總結

總結來自官方文件 首先android裡邊的檢視是以樹形結構組織起來的。檢視樹的繪製是從檢視的根節點開始的。這就要求去測量和繪製這個檢視樹時遍歷檢視樹上的每乙個view。每乙個viewgroup也相當於乙個樹,他也有責任保證他的每乙個子view的draw方法會被呼叫。同樣的每乙個子view也有責任繪製...