Pertanyaan Cara membuat gaya Android Tabbed dengan Page Swipe View


Saya ingin contoh tab seperti ini

google play tab

Saya mencari tetapi baru saja mendapatkan ini.

viewpageindicator

Saya tidak bisa menggunakan sumber ini. Dapatkah seseorang memberi tahu saya contoh lain dari tab dengan opsi geser.
Saya pikir viewpageindicator tidak sama dengan google memainkan tab.

menyebabkan ketika saya bergulir di google memainkan halaman baris di bawah tab bergerak sambil bergulir, Tapi di viewpageindicator tidak.

Terima kasih


25
2018-03-08 06:07


asal


Jawaban:


Artikel ini (Android Material Design bekerja dengan Tab) Diterbitkan di 13 September 2015 memandu Anda melalui pembuatan halaman tab.

Misalnya, membuat Tab Tetap

Tab tetap harus digunakan ketika Anda memiliki jumlah tab yang terbatas. Ini   tab dalam posisi tetap. Dalam banyak perpustakaan dukungan desain android   elemen baru seperti CoordinatorLayout, AppBarLayout, TabLayout dan banyak   lebih banyak diperkenalkan. Saya tidak akan membahas semua ini karena bukan   agenda artikel ini.

Buka file tata letak aktivitas utama (activity_main.xml) dan tambahkan   di bawah kode tata letak.

app:tabMode - Menentukan mode tata letak tab. Dalam kasus kami   nilainya harus "diperbaiki"

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>

Buka MainActivity.java dan lakukan perubahan di bawah ini.

tabLayout.setupWithViewPager() - Menetapkan ViewPager ke TabLayout.

setupViewPager() - Menentukan jumlah tab dengan pengaturan yang sesuai   fragmen dan nama tab.

ViewPagerAdapter - Kelas adaptor khusus menyediakan fragmen yang diperlukan   untuk pager tampilan.    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);
        }
    }
}

Sekarang jalankan aplikasinya. Anda harus dapat melihat tab yang ditampilkan dengan swipe   fungsionalitas antara tab.


24
2018-01-21 08:31



Pertama Anda perlu membuat file layout xml dengan viewpager android.support.v4.view.ViewPager

Kemudian mengembang tata letak ini dalam aktivitas utama Anda, pastikan aktivitas Anda mengimplementasikan

android.support.v7.app.ActionBar.TabListener Katakanlah, Anda ingin memiliki 4 tab, lalu buat

4 fragmen berbeda. Buat adaptor umum untuk memfasilitasi fragmen ini berdasarkan pada

tab yang Anda pilih.

Berikut ini contoh sederhana dengan cuplikan kode, http://www.feelzdroid.com/2014/10/android-action-bar-tabs-swipe-views.html

Catatan: contoh di atas berfungsi baik dengan dukungan lib android, yang menyediakan bilah tindakan mundur

kompatibilitas untuk versi ponsel android sebelumnya

Semoga itu membantu.

Terima kasih


3
2017-11-27 04:23



Ketika saya menerapkan sesuatu yang serupa, saya telah melakukannya dengan cara yang lebih baik, dalam arti kelas. Saya telah membuat adaptor dalam paket yang disebut berfungsi.

Di bawah ini adalah kodenya:

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;
    }
}

Anda kemudian perlu membuat kelas baru yang disebut WorkingFragment dalam contoh yang saya berikan. Demi kode bersih, saya membuat kelas ini di paket utama.

Di bawah ini adalah kode untuk fragmen:

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.
    }
}

Dalam MainActivity, Anda kemudian perlu membuat fungsi untuk mengubah bentuk satu tab ke tab lainnya. Dalam kasus saya, saya telah memasukkan ini ke dalam paket utama.

Di bawah ini adalah kode untuk kelas 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) {
    }
} 

Semoga ini telah membantu Anda mencapai funtionalitas yang diperlukan untuk aplikasi Anda :)


1
2017-08-18 07:48



cara sederhana untuk bekerja dengan tab fragmen

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

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

di buat dan kemudian

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);
    }
}

di tambah file tata letak

 <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
2017-10-06 09:35