it-swarm.com.ru

Как создать стиль Android с вкладками с помощью Page Swipe View

Я хочу пример вкладки, как это 

google play tab

Я искал, но только что получил это.

viewpageindicator

Я не мог использовать этот источник. Может кто-нибудь сказать мне другой пример вкладки с опцией скольжения.
Я думаю, что viewpageindicator - это не то же самое, что вкладки Google Play .

потому что когда я прокручиваю на странице Google Play, во время прокрутки перемещается строка под вкладками, но в viewpageindicator это не .

Спасибо

26
Person

Эта статья (Android Material Design работает с вкладками), опубликованная 13 сентября 2015 г., поможет вам в создании вкладок.

Например, создание Фиксированные вкладки

Фиксированные вкладки следует использовать, когда у вас ограниченное количество вкладок. Эти вкладки фиксируются на месте. В Android дизайн поддержки библиотеки много новые элементы, такие как CoordinatorLayout, AppBarLayout, TabLayout и lot больше было введено. Я не буду покрывать все это, поскольку это не повестка дня этой статьи.

Откройте файл макета основного действия (activity_main.xml) и добавьте код макета ниже.

app:tabMode - Определяет режим макета вкладки. В нашем случае значение должно быть «фиксированным»

activity_main.xml

<Android.support.design.widget.CoordinatorLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent">

    <Android.support.design.widget.AppBarLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">

        <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            Android:background="?attr/colorPrimary"
            app:layout_scrollFlags="scroll|enterAlways"
            app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        <Android.support.design.widget.TabLayout
            Android:id="@+id/tabs"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            app:tabMode="fixed"
            app:tabGravity="fill"/>
    </Android.support.design.widget.AppBarLayout>

    <Android.support.v4.view.ViewPager
        Android:id="@+id/viewpager"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior"  />
</Android.support.design.widget.CoordinatorLayout>

Откройте MainActivity.Java и внесите следующие изменения.

tabLayout.setupWithViewPager() - назначает ViewPager для TabLayout.

setupViewPager() - Определяет количество вкладок, устанавливая соответствующие фрагмент и название вкладки.

ViewPagerAdapter - Пользовательский класс адаптера предоставляет требуемые фрагменты для просмотра пейджер . MainActivity.Java

package info.androidhive.materialtabs.activity;

import Android.os.Bundle;
import Android.support.design.widget.TabLayout;
import Android.support.v4.app.Fragment;
import Android.support.v4.app.FragmentManager;
import Android.support.v4.app.FragmentPagerAdapter;
import Android.support.v4.view.ViewPager;
import Android.support.v7.app.AppCompatActivity;
import Android.support.v7.widget.Toolbar;

import Java.util.ArrayList;
import Java.util.List;

import info.androidhive.materialtabs.R;
import info.androidhive.materialtabs.fragments.OneFragment;
import info.androidhive.materialtabs.fragments.ThreeFragment;
import info.androidhive.materialtabs.fragments.TwoFragment;

public class MainActivity extends AppCompatActivity {

    private Toolbar toolbar;
    private TabLayout tabLayout;
    private ViewPager viewPager;

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

        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        getSupportActionBar().setDisplayHomeAsUpEnabled(true);

        viewPager = (ViewPager) findViewById(R.id.viewpager);
        setupViewPager(viewPager);

        tabLayout = (TabLayout) findViewById(R.id.tabs);
        tabLayout.setupWithViewPager(viewPager);
    }

    private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
        adapter.addFragment(new OneFragment(), "ONE");
        adapter.addFragment(new TwoFragment(), "TWO");
        adapter.addFragment(new ThreeFragment(), "THREE");
        viewPager.setAdapter(adapter);
    }

    class ViewPagerAdapter extends FragmentPagerAdapter {
        private final List<Fragment> mFragmentList = new ArrayList<>();
        private final List<String> mFragmentTitleList = new ArrayList<>();

        public ViewPagerAdapter(FragmentManager manager) {
            super(manager);
        }

        @Override
        public Fragment getItem(int position) {
            return mFragmentList.get(position);
        }

        @Override
        public int getCount() {
            return mFragmentList.size();
        }

        public void addFragment(Fragment fragment, String title) {
            mFragmentList.add(fragment);
            mFragmentTitleList.add(title);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return mFragmentTitleList.get(position);
        }
    }
}

Теперь запустите приложение. Вы должны видеть вкладки, отображаемые с помощью пальца функциональность между вкладками.

25
Alex Jolig

Сначала вам нужно создать файл макета XML с помощью ViewPager Android.support.v4.view.ViewPager

Затем надуйте этот макет в своей основной деятельности, убедитесь, что ваша деятельность реализует 

Android.support.v7.app.ActionBar.TabListener Допустим, вы хотите иметь 4 вкладки, а затем создать 

4 разных фрагмента. Создайте общий адаптер для облегчения этих фрагментов на основе 

вкладки вы выбираете. 

Вот простой пример с фрагментом кода, http://www.feelzdroid.com/2014/10/Android-action-bar-tabs-swipe-views.html

Примечание: приведенный выше пример хорошо работает с библиотекой поддержки Android, которая обеспечивает обратную панель действий 

совместимость для более ранних версий телефонов Android 

Надеюсь, поможет. 

Спасибо

3
Naruto

Когда я реализовал нечто подобное, я сделал это лучше, в смысле классов. Я создал адаптер в пакете, который называется рабочий. 

Ниже приведен код:

public class TabsPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int index) {

        switch (index) {
        case 0:
          return new WorkingFragment();
        //You can add as many fragments as you wish here by adding the cases and calling the different fragments.
        }      
        return null;
    }

    @Override
    public int getCount() {
        // get item count - equal to number of tabs. 4 is only the number of fragments I had used.
        return 4;
    }
}

Затем вам нужно создать новый класс с именем WorkingFragment в приведенном мной примере. Ради чистого кода я создал этот класс в основном пакете.

Ниже приведен код для фрагмента:

public class NewEventFragment extends Fragment {

    View rootView;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    //reference the xml file containing the view with all the code here.
    }
}

В MainActivity вам необходимо настроить функциональность для перехода с одной вкладки на другую. В моем случае я включил это в основной пакет.

Ниже приведен код для класса MainActivity:

public class MainActivity extends FragmentActivity implements ActionBar.TabListener {

    private ViewPager ViewPager;
    private TabsPagerAdapter SectionsPagerAdapter;
    private ActionBar actionBar;

    //Include the name for the tabs in this array. Make sure the number of elements in this string matches the number of views you will have in your app. 
    private String[] tabs = {};

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

     // Initialisation
        ViewPager = (ViewPager) findViewById(R.id.pager);
        actionBar = getActionBar();
        SectionsPagerAdapter = new TabsPagerAdapter(getSupportFragmentManager());

        ViewPager.setAdapter(SectionsPagerAdapter);
        actionBar.setHomeButtonEnabled(false);
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     // Adding Tabs
        for (String tab_name : tabs) {
            actionBar.addTab(actionBar.newTab().setText(tab_name).setTabListener(this));
        }

        ViewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {

            @Override
            public void onPageSelected(int position) {
                // on changing the page
                // make respected tab selected
                actionBar.setSelectedNavigationItem(position);
            }

            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
            }

            @Override
            public void onPageScrollStateChanged(int arg0) {
            }
        });
    }

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

    }

    @Override
    public void onTabSelected(Tab tab, Android.app.FragmentTransaction ft) {
        ViewPager.setCurrentItem(tab.getPosition());

    }

    @Override
    public void onTabUnselected(Tab tab, Android.app.FragmentTransaction ft) {
    }
} 

Надеюсь, что это помогло вам достичь необходимой функциональности для вашего приложения :)

1
Michele La Ferla

простой способ работы с фрагментными вкладками

    viewPager = (ViewPager) findViewById(R.id.viewpager);
    setupViewPager(viewPager);

    tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);

в создании, а затем

private void setupViewPager(ViewPager viewPager) {
        ViewPagerAdapter adapter = new 
        ViewPagerAdapter(getSupportFragmentManager());        
        adapter.addFrag(new RootDetailFragment(), "TAB 1");
        adapter.addFrag(new ShiftDetailFragment(), "TAB 2");        
        viewPager.setAdapter(adapter);
}


class ViewPagerAdapter extends FragmentPagerAdapter {
    private final List<Fragment> mFragmentList = new ArrayList<>();
    private final List<String> mFragmentTitleList = new ArrayList<>();

    public ViewPagerAdapter(FragmentManager manager) {
        super(manager);
    }

    @Override
    public Fragment getItem(int position) {
        return mFragmentList.get(position);
    }

    @Override
    public int getCount() {
        return mFragmentList.size();
    }

    public void addFrag(Fragment fragment, String title) {
        mFragmentList.add(fragment);
        mFragmentTitleList.add(title);
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return mFragmentTitleList.get(position);
    }
}

в файл макета добавить

 <Android.support.design.widget.TabLayout
        Android:id="@+id/tabs"
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:background="#000"
        app:tabGravity="fill"
        app:tabMode="fixed" />
</Android.support.design.widget.AppBarLayout>
0
Mahesh Pandit