//tablayout点击事件
for (int i = 0; i < tablayout.getTabCount(); i++) {
TabLayout.Tab tab = mtab_record.getTabAt(i);
if (tab == null) return;
//这里使用到反射,拿到Tab对象后获取Class
Class c = tab.getClass();
try {
//Filed “字段、属性”的意思,c.getDeclaredField 获取私有属性。
//"mView"是Tab的私有属性名称(可查看TabLayout源码),类型是 TabView,TabLayout私有内部类。
Field field = c.getDeclaredField("mView");
//值为 true 则指示反射的对象在使用时应该取消 Java 语言访问检查。值为 false 则指示反射的对象应该实施 Java 语言访问检查。
//如果不这样会报如下错误
// java.lang.IllegalAccessException:
//Class com.test.accessible.Main
//can not access
//a member of class com.test.accessible.AccessibleTest
//with modifiers "private"
field.setAccessible(true);
final View view = (View) field.get(tab);
if (view == null) return;
view.setTag(i);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int position = (int) view.getTag();
//这里就可以根据业务需求处理点击事件了。
ToastUtils.showLongToast(MaintenanceRecordActivity.this,"点击了"+position);
}
});
} catch (Exception e) {
e.printStackTrace();
}
}