2016-04-07 86 views
1

我已經使用viewpager實現了ActionBar.TabListener。現在我想禁用一些條件下的標籤點擊 我已經停止使用TouchListner刷卡,但想要做同樣的選項卡點擊。 這是我的代碼。如何在某些情況下禁用/啓用ActionBar.TabListener

MainActivity.java

public class MainActivity extends FragmentActivity implements ActionBar.TabListener { 

    ActionBar actionBar; 
    ViewPager viewPager; 
    String check =""; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     viewPager = (ViewPager) findViewById(R.id.pager); 

     FragmentManager fragmentManager = getSupportFragmentManager(); 
     viewPager.setAdapter(new MyAdpter(fragmentManager)); 
     viewPager.setOnTouchListener(new View.OnTouchListener() { 

      @Override 
      public boolean onTouch(View arg0, MotionEvent arg1) { 
       // TODO Auto-generated method stub 

       if ("".equals(check)) { 
        return true; 
       } 
       return false; 
      } 
     }); 
     viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 

      } 

      @Override 
      public void onPageSelected(int position) { 
       actionBar.setSelectedNavigationItem(position); 
      } 

      @Override 
      public void onPageScrollStateChanged(int state) { 

      } 
     }); 
     actionBar = getActionBar(); 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 


     ActionBar.Tab tab1 = actionBar.newTab(); 
     tab1.setText("Tab 1"); 
     tab1.setTabListener(this); 

     ActionBar.Tab tab2 = actionBar.newTab(); 
     tab2.setText("Tab 2"); 
     tab2.setTabListener(this); 

     ActionBar.Tab tab3 = actionBar.newTab(); 
     tab3.setText("Tab 3"); 
     tab3.setTabListener(this); 

     actionBar.addTab(tab1); 
     actionBar.addTab(tab2); 
     actionBar.addTab(tab3); 

     viewPager.setCurrentItem(2, false); 
    } 


    @Override 
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) { 
      viewPager.setCurrentItem(tab.getPosition()); 
    } 

    @Override 
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) { 

    } 

    @Override 
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) { 

    } 
} 

MyAdpter.java

class MyAdpter extends FragmentPagerAdapter{ 

    public MyAdpter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     Fragment fragment = null; 
     if(position==0){ 
      fragment = new FragmentA(); 
     } 
     if(position==1){ 
      fragment = new FragmentB(); 
     } 
     if(position==2){ 
      fragment = new FragmentC(); 
     } 
     return fragment; 
    } 

    @Override 
    public int getCount() { 
     return 3; 
    } 
} 

FragmentA.java

public class FragmentA extends Fragment { 

    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     return inflater.inflate(R.layout.fragment_a , container,false); 
    } 
} 

FragmentB/FragmentC類似於FragmentA

activity_main.xml中

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

</android.support.v4.view.ViewPager> 

截圖

enter image description here

+0

當您完全想禁用觸摸監聽器時,有哪些場景? – Newbiee

+0

由於您使用的製表符號碼無法管理所有內容,因此當您要禁用的製表符點擊時,解決方法是在其他製表符上執行點擊操作 – Newbiee

+0

如何禁用製表符上的偵聽器? – Pallavi

回答

0

你可以做這樣的事情..

在複選框OnCheckedChanged監聽器,你可以指定哪些標籤是使..

只是做

// to enable 
tabLayout.getChildAt(position).setEnabled(true); 

// or to disable 
tabLayout.getChildAt(position).setClickable(false);. 

使用這個屬性來啓用或禁用選項卡點擊。

+0

這裏的'tabLayout'是什麼? – Pallavi

+0

看到,無論您使用的是操作欄,它基本上都會添加到Tablayout,它的android設計小部件中。對於那個小部件,你可以使用這個方法。對於你的情況,你可以使用tabplayout和viewpager並保存你的目的,因爲actionbar選項卡不支持這種啓用禁用的方法..你可以開始使用這個** https://guides.codepath.com/android/google-play- style-tabs-using-tablayout **它太容易使用了。 – Newbiee

相關問題