我正在尝试通过代码在TabLayout
内设置不同状态的自定义视图背景。
有几个类似标题的问题,但它们处理的是XML。
据我所知,mTabBackgroundResId
仅通过XML设置,并在创建时应用于TabView
。但是,由于我使用自定义视图,因此不适用。通过代码或XML在自定义视图上设置背景只会产生如下内容:
答案 0 :(得分:0)
public class MyTabLayout extends TabLayout {
private LinearLayout linearLayout;
private void init(Context context, attrs etc.) {
linearLayout = (LinearLayout) getChildAt(0);
}
private StateListDrawable getStateListDrawable() {
StateListDrawable sld = new StateListDrawable();
sld.addState(new int[] {android.R.attr.state_pressed},
ContextCompat.getDrawable(context, <color_id>);
sld.addState(new int[] {android.R.attr.state_selected},
ContextCompat.getDrawable(context, <color_id>);
sld.addState(new int[] { },
ContextCompat.getDrawable(context, <color_id>);
return sld;
}
public void addTab(String label) {
addTab(newTab().setCustomView(<view> or <view_id>);
linearLayout.getChildAt(linearLayout.getChildCount()-1)
.setBackground(getStateListDrawable());
}
}