Java Android TableLayout setOnTabSelectedListener不工作
假设我有Java Android TableLayout setOnTabSelectedListener不工作,java,android,android-tablayout,Java,Android,Android Tablayout,假设我有MainActivity类,其中TabLayout和ViewPager用相应的4个页面初始化 MainActivity.class public class MainActivity extends AppCompatActivity { private SectionsPagerAdapter mSectionsPagerAdapter; private ViewPager mViewPager; @Override protected void on
MainActivity
类,其中TabLayout
和ViewPage
r用相应的4个页面初始化
MainActivity.class
public class MainActivity extends AppCompatActivity {
private SectionsPagerAdapter mSectionsPagerAdapter;
private ViewPager mViewPager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
// TabLayout
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(mViewPager);
}
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
// getItem is called to instantiate the fragment for the given page.
// Return a PlaceholderFragment (defined as a static inner class below).
// return PlaceholderFragment.newInstance(position + 1);
switch (position) {
case 0:
ActivityZero tab0 = new ActivityZero();
return tab0;
case 1:
ActivityOne tab1 = new ActivityOne();
return tab1;
case 2:
ActivityTwo tab2 = new ActivityTwo();
return tab2;
case 3:
ActivityThree tab3 = new ActivityThree();
return tab3;
default:
return null;
}
}
@Override
public int getCount() {
// Show 4 total pages.
return 4;
}
//Setting the ICON
private int[] imageResId = {
R.drawable.ic_zero
R.drawable.ic_one,
R.drawable.ic_two,
R.drawable.ic_three
};
@Override
public CharSequence getPageTitle(int position) {
Drawable image = ContextCompat.getDrawable(getApplicationContext(), imageResId[position]);
image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight());
SpannableString sb = new SpannableString(" ");
ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM);
sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
return sb;
}
}
}
上面的代码一切正常,但是当我在onCreate
中添加setOnTabSelectedListener
时:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setAdapter(mSectionsPagerAdapter);
// TabLayout
TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);
tabLayout.setupWithViewPager(mViewPager);
//This is what i'm trying to add
mViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
mViewPager.setCurrentItem(tab.getPosition());
tab.getIcon().setAlpha(255);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
tab.getIcon().setAlpha(127);
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
当我运行时,一切正常,但当我滑动以更改选项卡时,应用程序不再响应并开始崩溃
我正在尝试获取所选选项卡位置
,并在所选页面上用setAlpha(127)
设置图标
,但运气不佳
注意:我正在使用支持库,我当前的API是8
更新:
12-04 11:32:12.342 11884-11884/com.sample.app.mysampleapp E/InputEventReceiver: Exception dispatching input event.
12-04 11:32:12.342 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: java.lang.NullPointerException
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at com.sample.app.mysampleapp.MainActivity$1.onTabUnselected(MainActivity.java:53)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.support.design.widget.TabLayout.selectTab(TabLayout.java:867)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.support.design.widget.TabLayout$TabLayoutOnPageChangeListener.onPageSelected(TabLayout.java:1759)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.support.v4.view.ViewPager.dispatchOnPageSelected(ViewPager.java:1794)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:569)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:553)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:2102)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.View.dispatchTouchEvent(View.java:7396)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2462)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2195)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2177)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1482)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.app.Activity.dispatchTouchEvent(Activity.java:2470)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2125)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.View.dispatchPointerEvent(View.java:7581)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3571)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3503)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4614)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4592)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4696)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.os.MessageQueue.nativePollOnce(Native Method)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.os.MessageQueue.next(MessageQueue.java:125)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.os.Looper.loop(Looper.java:138)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at android.app.ActivityThread.main(ActivityThread.java:4947)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at java.lang.reflect.Method.invokeNative(Native Method)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at java.lang.reflect.Method.invoke(Method.java:511)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
12-04 11:32:12.402 11884-11884/com.sample.app.mysampleapp E/MessageQueue-JNI: at dalvik.system.NativeStart.main(Native Method)
12-04 11:32:12.412 11884-11884/com.sample.app.mysampleapp D/AndroidRuntime: Shutting down VM
12-04 11:32:12.412 11884-11884/com.sample.app.mysampleapp W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x4131e2a0)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: FATAL EXCEPTION: main
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: java.lang.NullPointerException
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at com.sample.app.mysampleapp.MainActivity$1.onTabUnselected(MainActivity.java:53)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.support.design.widget.TabLayout.selectTab(TabLayout.java:867)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.support.design.widget.TabLayout$TabLayoutOnPageChangeListener.onPageSelected(TabLayout.java:1759)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.support.v4.view.ViewPager.dispatchOnPageSelected(ViewPager.java:1794)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.support.v4.view.ViewPager.scrollToItem(ViewPager.java:569)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.support.v4.view.ViewPager.setCurrentItemInternal(ViewPager.java:553)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.support.v4.view.ViewPager.onTouchEvent(ViewPager.java:2102)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.View.dispatchTouchEvent(View.java:7396)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2462)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2195)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2468)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2210)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchTouchEvent(PhoneWindow.java:2177)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at com.android.internal.policy.impl.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1482)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.app.Activity.dispatchTouchEvent(Activity.java:2470)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.support.v7.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:60)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchTouchEvent(PhoneWindow.java:2125)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.View.dispatchPointerEvent(View.java:7581)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewRootImpl.deliverPointerEvent(ViewRootImpl.java:3571)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:3503)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:4614)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:4592)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:4696)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:171)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.os.MessageQueue.nativePollOnce(Native Method)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.os.MessageQueue.next(MessageQueue.java:125)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.os.Looper.loop(Looper.java:138)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:4947)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:511)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
12-04 11:32:12.502 11884-11884/com.sample.app.mysampleapp E/AndroidRuntime: at dalvik.system.NativeStart.main(Native Method)
有人能帮我吗?非常感谢。好的,我想我现在明白了,您使用的是getIcon()
方法,但您从未通过setIcon()
设置图标,因此在getIcon()
上返回null
。而是使用getPageTitle()
来显示图标,因此选项卡甚至不知道有图标
我建议您修改getPageTitle()
以始终返回null
,然后在主活动类中创建选项卡设置方法setupTabs()
,该方法应类似于:
private void setupTabs() {
mTabLayout.getTabAt(0).setIcon(mTabIcons[0]);
mTabLayout.getTabAt(1).setIcon(mTabIcons[1]);
mTabLayout.getTabAt(2).setIcon(mTabIcons[2]);
mTabLayout.getTabAt(2).setIcon(mTabIcons[3]);
}
同时将imageResId
阵列从适配器移出到活动:
private int[] mTabIcons = {
R.drawable.ic_zero
R.drawable.ic_one,
R.drawable.ic_two,
R.drawable.ic_three
};
您还应该更改设置AbsSelectedListener
以使用表格布局。ViewPageFrontAbsSelectedListener
,以便为您处理保持选项卡同步的问题:
tabLayout.setOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(mViewPager) {
@Override
public void onTabSelected(TabLayout.Tab tab) {
super.onTabSelected(tab);
tab.getIcon().setAlpha(255);
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
super.onTabUnselected(tab);
tab.getIcon().setAlpha(127);
}
});
然后可以在onCreate()
中调用setupTabs()
:
使用addOnTabSelectedListener
示例代码
tabLayout.addOnTabSelectedListener(object : OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab) {
viewPager.setCurrentItem(tab.position)
}
override fun onTabUnselected(tab: TabLayout.Tab) {}
override fun onTabReselected(tab: TabLayout.Tab) {}
})
我怀疑调用mviewpage.setCurrentItem(tab.getPosition())原因是onTabSelected
回调中的code>(无限递归)。我认为您不需要告诉viewpager进行更改,当您setupWithViewPager
时,所有这些都应该得到处理。我已经尝试删除这一行mViewPager.setCurrentItem(tab.getPosition())代码>但仍然有一个错误。唯一有效的是当我删除这一行时tab.getIcon().setAlpha(255)
,但是我需要这个来setAlpha
到255
和127
取消选中。我不知道到底是什么错误。也许我的问题是在每个标签上设置图标而不是文本?是否有其他方法来设置每个选项卡上的图标而不是文本?可能重复:SetOnAbsSelectedListener不推荐使用,请使用AddOnAbsSelectedListener代替。好的,谢谢,但我有一个问题。当我尝试这个时,图标太小了。我不需要删除这个`mviewpage.setCurrentItem(tab.getPosition());`,因为这将处理“单击”选项卡。我编辑了我的答案以使用侦听器界面,该界面将为您处理保持选项卡同步的问题,但您的代码与界面的功能完全相同。至于图标的大小,请确保可绘制内容的密度正确。请参见:SetOnAbsSelectedListener不推荐使用,请改用AddOnAbsSelectedListener
tabLayout.addOnTabSelectedListener(object : OnTabSelectedListener {
override fun onTabSelected(tab: TabLayout.Tab) {
viewPager.setCurrentItem(tab.position)
}
override fun onTabUnselected(tab: TabLayout.Tab) {}
override fun onTabReselected(tab: TabLayout.Tab) {}
})