2017-02-13 55 views
1

我創建了一個customViewPager類來阻止在選項卡之間滑動.Swiping已禁用,但不顯示選項卡內的UI組件。使用時不顯示選項卡組件Custom Viewpager

這是CustomViewPager.java文件。

public class CustomViewPager extends ViewPager { 

    private boolean enabled; 
    public CustomViewPager(Context context, AttributeSet attrs){ 
     super(context,attrs); 
     this.enabled = true; 


    } 

    public CustomViewPager(Context context){ 
     super(context); 
     this.enabled = true; 
    } 

    @Override 
    public boolean onTouchEvent(MotionEvent event){ 
     if(this.enabled){ 
      return super.onTouchEvent(event); 
     } 
     return false; 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent event){ 
     if(this.enabled){ 
      return super.onInterceptTouchEvent(event); 
     } 
     return false; 
    } 

    public void setPagingEnabled(boolean enabled){ 
     this.enabled = enabled; 
    } 
} 

這裏是MainActivity.java文件

public class MainActivity extends AppCompatActivity implements TabLayout.OnTabSelectedListener{ 

    private TabLayout tabLayout; 
    public static int swipe = 0; 
    private CustomViewPager viewPager; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 


     //Adding toolbar to the activity 
     Toolbar toolbar = (Toolbar)findViewById(R.id.toolbar); 
     setSupportActionBar(toolbar); 


     //Initializing the tablayout 
     tabLayout = (TabLayout)findViewById(R.id.tabLayout); 
     tabLayout.addTab(tabLayout.newTab().setText("Tab1")); 
     tabLayout.addTab(tabLayout.newTab().setText("Tab2")); 
     tabLayout.addTab(tabLayout.newTab().setText("Tab3")); 
     tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

     viewPager = (CustomViewPager)findViewById(R.id.mViewPager); 
     Pager adapter= new 
     Pager(getSupportFragmentManager(),tabLayout.getTabCount()); 

     viewPager.setAdapter(adapter); 



     //Adding onTabSelectedListener to swipe views 
     tabLayout.setOnTabSelectedListener(this); 
    } 



    @Override 
    public void onTabSelected(TabLayout.Tab tab) { 


      viewPager.setCurrentItem(tab.getPosition()); 

    } 

    @Override 
    public void onTabUnselected(TabLayout.Tab tab) { 

    } 

    @Override 
    public void onTabReselected(TabLayout.Tab tab) { 

    } 
} 

下面是Tab1.java文件

package com.example.nitesh.finaltab; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.util.Log; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 

/** 
* Created by Nitesh on 2/6/2017. 
*/ 
public class Tab1 extends Fragment { 

    int click = 0; 
    View view; 
    Button button; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container,  
    Bundle savedInstanceState){ 
     view = inflater.inflate(R.layout.tab1, container, false); 
     button = (Button)view.findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Log.d("Button is clicked","Tab1"); 
       if(click == 0){ 

       MainActivity.swipe = 1; 
       click = 1; 
       } 

       else if(click == 1){ 
        MainActivity.swipe = 0; 
        click = 0; 
       } 
      } 
     }); 

     return view; 

    } 
} 

這裏是activity_main.xml中文件

 <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 

    tools:context="com.example.nitesh.finaltab.MainActivity"> 


    <!-- our toolbar --> 
    <android.support.v7.widget.Toolbar 
     android:id = "@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     android:minHeight = "?attr/actionBarSize"   
     /> 


    <android.support.design.widget.TabLayout 
     android:id = "@+id/tabLayout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="?attr/colorPrimary" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

     <!-- View pager to swipe views -->` 

     <com.example.nitesh.finaltab.CustomViewPager 
     android:layout_width="0dp" 
     android:id="@+id/mViewPager" 
     android:layout_height="0dp">    
     </com.example.nitesh.finaltab.CustomViewPager> 
     </LinearLayout> 

我會見在選擇tab1時只是一個空白的Tab。請指出我正在做的錯誤。

+0

什麼是您的適配器在做什麼?您提供給ViewPager的適配器非常重要!你可以發佈你的代碼尋呼機類 – Charlie

+0

這裏是尋呼機類的代碼類 –

回答

0

Pager.java

package com.example.nitesh.finaltab; 

import android.support.v4.app.Fragment; 
import android.support.v4.app.FragmentManager; 
import android.support.v4.app.FragmentStatePagerAdapter; 

/** 
* Created by Nitesh on 2/6/2017. 
*/ 
public class Pager extends FragmentStatePagerAdapter 
{ 
    int tabCount; 
    public Pager(FragmentManager fm, int tabCount){ 
     super(fm); 
     //Initializing the tab count 
     this.tabCount = tabCount; 
    } 

    //Overriding method getItem 
    @Override 

    public Fragment getItem(int position){ 
     switch(position){ 
      case 0: 
       Tab1 tab1 = new Tab1(); 
       return tab1; 
      case 1: 
       Tab2 tab2 = new Tab2(); 
       return tab2; 
      case 2: 
       Tab3 tab3 = new Tab3(); 
       return tab3; 
      default: 
       return null; 

     } 
     } 

    @Override 
    public int getCount(){ 
    return tabCount; 
} 
} 
相關問題