我正在使用android.support.design.widget.TabLayout。 它有兩個選項卡, 如果用戶選擇第二個選項卡在特定條件下,我希望用戶重定向到第一個選項卡,並禁止他轉到第二個選項卡,直到條件匹配。 爲了實現這個我試過,android.support.design.widget.TabLayout選擇選項卡編程
tabLayout.getTabAt(0).select();
,但它不重新選擇第一個選項卡
我正在使用android.support.design.widget.TabLayout。 它有兩個選項卡, 如果用戶選擇第二個選項卡在特定條件下,我希望用戶重定向到第一個選項卡,並禁止他轉到第二個選項卡,直到條件匹配。 爲了實現這個我試過,android.support.design.widget.TabLayout選擇選項卡編程
tabLayout.getTabAt(0).select();
,但它不重新選擇第一個選項卡
您可以選擇Fragment.onViewCreated()
中的選項卡。
這是我如何解決它:
tabLayout.getTabAt(CurrentItem).getCustomView().setSelected(true);
這是我的設置。對我來說工作得很好。
//declare your tabs to be add on
TabLayout tlDailyView;
private TabLayout.Tab tabAppointment, tabSlots;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_daily_view, container, false);
initializeMembers();
setupTabLayout();
return view;
}
private void setupTabLayout() {
tlDailyView.addTab(tabAppointment, 0, true);
tlDailyView.addTab(tabSlots, 1, true);
tlDailyView.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
@Override
public void onTabSelected(TabLayout.Tab tab) {
switch (tab.getPosition()) {
case 0:
//open fragment at position 0 here
case 1:
//open fragment at position 1 here
break;
}
}
@Override
public void onTabUnselected(TabLayout.Tab tab) {
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
private void initializeMembers() {
tabSlots = tlDailyView.newTab();
tabAppointment = tlDailyView.newTab();
tabAppointment.setText(R.string.tab_appts).select();
tabSlots.setText(R.string.tab_slots);
}
不要忘記初始化上面的標籤佈局。
這爲我工作:
int tabIndex = 2;
tabLayout.setScrollPosition(tabIndex,0f,true);
viewPager.setCurrentItem(tabIndex);
而不是讓他們來瀏覽,然後不得不對它們進行重定向,可能會更容易禁用選項卡選擇,直到滿足準則:http://stackoverflow.com/問題/ 4497187 /如何禁用一個選項卡在Android屏幕 –
@QuintinBalsdon,謝謝, 但您的鏈接中的示例與TabHost.It有tabEnter()方法tabhost.getTabwidget中的方法。 我在支持庫中使用新的TabLayout。 – Pankaj