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也有責任繪製...