Adding Sliding Tabs using Support Library v7:21 with Toolbar in Android Developer Tools for existing project

后端 未结 4 962
青春惊慌失措
青春惊慌失措 2020-12-30 08:55

I have already read the information in this link: Use Tab with new ToolBar (AppCompat v7-21) and did a lot of research on the same.

But the problem is the SlidingTab

4条回答
  •  别那么骄傲
    2020-12-30 09:08

    1 . Copy SlidingTabLayout.java from https://developer.android.com/samples/SlidingTabsColors/src/com.example.android.common/view/SlidingTabLayout.html and paste it in your package.

    MainActivity.java

    package com.example.mysliding;
    
    import com.example.android.common.view.SlidingTabLayout;
    import com.example.mysliding.SlidingTabsBasicFragment.SamplePagerAdapter;
    
    import android.support.v4.app.FragmentTransaction;
    import android.support.v4.view.PagerAdapter;
    import android.support.v4.view.ViewPager;
    import android.support.v7.app.ActionBarActivity;
    import android.support.v7.widget.Toolbar;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.Menu;
    import android.view.MenuItem;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    
    public class MainActivity extends ActionBarActivity {
    
    static final String LOG_TAG = "SlidingTabsBasicFragment";
    private SlidingTabLayout mSlidingTabLayout;
    private ViewPager mViewPager;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.fragment_sample);
        Toolbar toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
    
        mViewPager = (ViewPager) findViewById(R.id.viewpager);
        mViewPager.setAdapter(new SamplePagerAdapter());
        mSlidingTabLayout = (SlidingTabLayout) findViewById(R.id.sliding_tabs);
        mSlidingTabLayout.setViewPager(mViewPager);
    
        /*
         * FragmentTransaction transaction =
         * getSupportFragmentManager().beginTransaction();
         * SlidingTabsBasicFragment fragment = new SlidingTabsBasicFragment();
         * transaction.replace(R.id.sample_content_fragment, fragment);
         * transaction.commit();
         */
    
    }
    
    @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;
    }
    
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
    
    class SamplePagerAdapter extends PagerAdapter {
    
        /**
         * @return the number of pages to display
         */
        @Override
        public int getCount() {
            return 5;
        }
    
        /**
         * @return true if the value returned from
         *         {@link #instantiateItem(ViewGroup, int)} is the same object
         *         as the {@link View} added to the {@link ViewPager}.
         */
        @Override
        public boolean isViewFromObject(View view, Object o) {
            return o == view;
        }
    
        // BEGIN_INCLUDE (pageradapter_getpagetitle)
        /**
         * Return the title of the item at {@code position}. This is important
         * as what this method returns is what is displayed in the
         * {@link SlidingTabLayout}.
         * 

    * Here we construct one using the position value, but for real * application the title should refer to the item's contents. */ @Override public CharSequence getPageTitle(int position) { return "Item " + (position + 1); } // END_INCLUDE (pageradapter_getpagetitle) /** * Instantiate the {@link View} which should be displayed at * {@code position}. Here we inflate a layout from the apps resources * and then change the text view to signify the position. */ @Override public Object instantiateItem(ViewGroup container, int position) { // Inflate a new layout from our resources View view = getLayoutInflater().inflate(R.layout.pager_item, container, false); // Add the newly created View to the ViewPager container.addView(view); // Retrieve a TextView from the inflated View, and update it's text TextView title = (TextView) view.findViewById(R.id.item_title); title.setText(String.valueOf(position + 1)); Log.i(LOG_TAG, "instantiateItem() [position: " + position + "]"); // Return the View return view; } /** * Destroy the item from the {@link ViewPager}. In our case this is * simply removing the {@link View}. */ @Override public void destroyItem(ViewGroup container, int position, Object object) { container.removeView((View) object); Log.i(LOG_TAG, "destroyItem() [position: " + position + "]"); } }

    }

    fragment_sample.xml

    
    
    
        
    
            
    
                
            
        
    
        
    
    
    

    Pager_item.xml

    
    
    
    
        
    
        
    
    
    

提交回复
热议问题