2015-05-26 47 views
1

我正在Actionbar.TabListenerFragments Tab。如何在ActionTab和片段內的片段中實現滑動視圖?

碎片包含多個Fragments,它們是通過每個標籤上的可點擊按鈕生成的Fragments

MainActivity和其他文件顯示如下:

我的主要活動如下:

import android.app.ActionBar; 
import android.app.Fragment; 
import android.os.Bundle; 
import android.app.Activity; 

public class MainActivity extends Activity { 
    // Declare Tab Variable 
    ActionBar.Tab Tab1, Tab2, Tab3; 
    Fragment fragmentTab1 = new FragmentTab1(); 
    Fragment fragmentTab2 = new Mcx(); 
    Fragment fragmentTab3 = new FragmentTab3(); 

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

     ActionBar actionBar = getActionBar(); 

     // Hide Actionbar Icon 
     actionBar.setDisplayShowHomeEnabled(false); 

     // Hide Actionbar Title 
     actionBar.setDisplayShowTitleEnabled(false); 

     // Create Actionbar Tabs 
     actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     // Set Tab Icon and Titles 
     Tab1 = actionBar.newTab().setText("A"); 
     Tab2 = actionBar.newTab().setText("B"); 
     Tab3 = actionBar.newTab().setText("C"); 

     // Set Tab Listeners 
     Tab1.setTabListener(new TabListener(fragmentTab1)); 
     Tab2.setTabListener(new TabListener(fragmentTab2)); 
     Tab3.setTabListener(new TabListener(fragmentTab3)); 

     // Add tabs to actionbar 
     actionBar.addTab(Tab1); 
     actionBar.addTab(Tab2); 
     actionBar.addTab(Tab3); 
    } 
} 

而且TabListener文件extends ActionBar.Tablistener

import android.app.ActionBar.Tab; 
import android.app.Fragment; 
import android.app.FragmentTransaction; 
import android.app.ActionBar; 

public class TabListener implements ActionBar.TabListener { 

    Fragment fragment; 

    public TabListener(Fragment fragment) { 
     // TODO Auto-generated constructor stub 
     this.fragment = fragment; 
    } 

    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 
     ft.replace(R.id. fragment_container, fragment); 
    } 

    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 
     ft.remove(fragment); 
    } 

    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 

    } 
} 

activity_main.xml配置爲如下:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/fragment_container" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

問:

鑑於上面我所實現的,我怎麼可能去實現既ActionTabFragment View作爲刷卡的看法?

回答

0

在谷歌我發現,我們可以實現在片段刷卡視圖與標籤配合使用ViewPager

進入到Android Studio和選擇TabActivity(刷卡與ViewPager模板)

首先,我們經過研究後,必須fragmentAcitvity與MainActivity延伸,並且應與ActionBar.TabListener

的代碼如下來實現..

import android.app.ActionBar; 
import android.app.ActionBar.Tab; 
import android.app.FragmentTransaction; 
import android.os.Bundle; 
import android.support.v4.app.FragmentActivity; 
import android.support.v4.view.ViewPager; 

@SuppressWarnings("ALL") 
public class MainActivity extends FragmentActivity implements ActionBar.TabListener{ 
    ActionBar actionbar; 
    public static ViewPager viewpager; 
    FragmentPageAdapter ft; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     viewpager = (ViewPager) findViewById(R.id.pager); 
     ft = new FragmentPageAdapter(getSupportFragmentManager()); 
     actionbar = getActionBar(); 
     viewpager.setAdapter(ft); 

     actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
     actionbar.addTab(actionbar.newTab().setText("TAB1").setTabListener(this)); 
     actionbar.addTab(actionbar.newTab().setText("TAB2").setTabListener(this)); 
     actionbar.addTab(actionbar.newTab().setText("TAB3").setTabListener(this)); 
     actionbar.addTab(actionbar.newTab().setText("TAB").setTabListener(this)); 
     viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { 
      @Override 
      public void onPageSelected(int arg0) { 
       actionbar.setSelectedNavigationItem(arg0); 
      } 
      @Override 
      public void onPageScrolled(int arg0, float arg1, int arg2) { 
       // TODO Auto-generated method stub 

      } 
      @Override 
      public void onPageScrollStateChanged(int arg0) { 
       // TODO Auto-generated method stub 
      } 
     }); 
    } 
    @Override 
    public void onTabReselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 
    } 
    @Override 
    public void onTabSelected(Tab tab, FragmentTransaction ft) { 
     viewpager.setCurrentItem(tab.getPosition()); 
    } 
    @Override 
    public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
     // TODO Auto-generated method stub 
    } 
} 

XML爲MainActivity .... activity_mail.xml將...

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

FragmentpageAdapter

public class FragmentPageAdapter extends FragmentPagerAdapter { 

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

    @Override 
    public Fragment getItem(int arg0) { 
     switch (arg0){ 
      case 0: return new Tab1Fragment(); 

      case 1: return new Tab2Fragment(); 

      case 2: return new Tab3Fragment(); 

      case 3: return new Tab4Fragment(); 

      default:break; 
     } 
     return null; 
    } 

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

    @Override 
    public CharSequence getPageTitle(int position) { 
     return getPageTitle(4); 
    } 
} 

如果採取通過Android Studio中的默認模板如上所述會有一個fragment_main文件還...

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
     android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
     android:paddingRight="@dimen/activity_horizontal_margin" 
     android:paddingTop="@dimen/activity_vertical_margin" 
     android:paddingBottom="@dimen/activity_vertical_margin" 
     tools:context=".MainActivity$PlaceholderFragment"> 

     <android.support.v7.widget.Toolbar 
      xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/toolbar" 
      android:minHeight="?attr/actionBarSize" 
      android:background="?attr/colorPrimary" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
      android:popupTheme="@style/ThemeOverlay.AppCompat.Light"> 
     </android.support.v7.widget.Toolbar> 

    </RelativeLayout> 

之後實現與您和宣佈,以FragmentPagerAdapter和MainActivity添加相關標籤的所有片段。

你必須設置活動主題Androidmenifest.xml

"@android:style/Theme.Holo.Light" 

以及在style.xml

<style name="AppTheme" parent="Theme.AppCompat">