如何使用Spinner更改TABS

时间:2014-12-05 01:37:05

标签: android android-viewpager android-spinner android-tabs android-toolbar

我想实现一个微调器来更改我的标签。 我从here复制了此代码,并且我做了一些更改,包含了一个带有微调器的工具栏。

我相信我需要为微调器实现一个侦听器,也许是一个setOnItemSelectedListener,但问题是如何更改选项卡在微调器上选择的项的位置?



public class MainActivity extends FragmentActivity {  
  
    /** 
     * The {@link android.support.v4.view.PagerAdapter} that will provide 
     * fragments for each of the sections. We use a 
     * {@link android.support.v4.app.FragmentPagerAdapter} derivative, which 
     * will keep every loaded fragment in memory. If this becomes too memory 
     * intensive, it may be best to switch to a 
     * {@link android.support.v4.app.FragmentStatePagerAdapter}. 
     */  
    SectionsPagerAdapter mSectionsPagerAdapter;  
  
    /** 
     * The {@link ViewPager} that will host the section contents. 
     */  
    ViewPager mViewPager;  
  
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
  
        // Create the adapter that will return a fragment for each of the three  
        // primary sections of the app.  
        mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());  
  
        // Set up the ViewPager with the sections adapter.  
        mViewPager = (ViewPager) findViewById(R.id.pager);  
        mViewPager.setAdapter(mSectionsPagerAdapter); 
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbarListaJogos);
        setSupportActionBar(toolbar);
        getSupportActionBar().setDisplayShowTitleEnabled(false);
        
        Spinner sp = (Spinner) findViewById(R.id.spinner_nav);
        List<String> listaMenu = new ArrayList<>();
        listMenu.add("Section 1");
        listMenu.add("Section 2");
        listMenu.add("Section 3");

        
        ArrayAdapter<String> adapter = 
        		new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, listaMenu);
        
        sp.setAdapter(adapter);
  
    }  
  
    @Override  
    public boolean onCreateOptionsMenu(Menu menu) {  
        // Inflate the menu; this adds items to the action bar if it is present.  
        getMenuInflater().inflate(R.menu.main, menu);  
        return true;  
    }  
  
    /** 
     * A {@link FragmentPagerAdapter} that returns a fragment corresponding to 
     * one of the sections/tabs/pages. 
     */  
    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 DummySectionFragment (defined as a static inner class  
            // below) with the page number as its lone argument.  
            Fragment fragment = new DummySectionFragment();  
            Bundle args = new Bundle();  
            args.putInt(DummySectionFragment.ARG_SECTION_NUMBER, position + 1);  
            fragment.setArguments(args);  
            return fragment;  
        }  
  
        @Override  
        public int getCount() {  
            // Show 3 total pages.  
            return 3;  
        }  
  
        @Override  
        public CharSequence getPageTitle(int position) {  
            Locale l = Locale.getDefault();  
            switch (position) {  
            case 0:  
                return getString(R.string.title_section1).toUpperCase(l);  
            case 1:  
                return getString(R.string.title_section2).toUpperCase(l);  
            case 2:  
                return getString(R.string.title_section3).toUpperCase(l);  
            }  
            return null;  
        }  
    }  
  
    /** 
     * A dummy fragment representing a section of the app, but that simply 
     * displays dummy text. 
     */  
    public static class DummySectionFragment extends Fragment {  
        /** 
         * The fragment argument representing the section number for this 
         * fragment. 
         */  
        public static final String ARG_SECTION_NUMBER = "section_number";  
  
        public DummySectionFragment() {  
        }  
  
        @Override  
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {  
            View rootView = inflater.inflate(R.layout.fragment_main_dummy, container, false);  
            TextView dummyTextView = (TextView) rootView.findViewById(R.id.section_label);  
            dummyTextView.setText(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)));  
            return rootView;  
        }  
    }  
  
}  
&#13;
&#13;
&#13;

MainActivity的布局XML:

&#13;
&#13;
<?xml version="1.0" encoding="utf-8"?>
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res/br.com.pixells.simuladorbr"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    
    <android.support.v7.widget.Toolbar
		xmlns:android="http://schemas.android.com/apk/res/android"
		android:id="@+id/toolbarListaJogos"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:background="#DC143C"
		app:subtitle="Teste"
		app:theme="@style/Theme.Abar.Widget"
		app:title="ToolBar">
        <Spinner
            android:id="@+id/spinner_nav"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
     </android.support.v7.widget.Toolbar> 
    
		<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"  
			tools:context=".MainActivity" >  
		
		
		  
<!--  
This title strip will display the currently visible page title, as well as the page  
titles for adjacent pages.  
-->  
		  
			<android.support.v4.view.PagerTitleStrip  
				android:id="@+id/pager_title_strip"  
				android:layout_width="match_parent"  
				android:layout_height="wrap_content"  
				android:layout_gravity="top"  
				android:background="#33b5e5"  
				android:paddingBottom="4dp"  
				android:paddingTop="4dp" 
				android:textColor="#fff" />  
		
		  
		</android.support.v4.view.ViewPager> 

</LinearLayout>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:1)

我用这个解决了这个问题:

mViewPager.setCurrentItem(position);