2016-01-23 30 views
5

Android Projemde sekme görünümü için Malzeme tasarım kullanıyorum. Ben:android malzeme tasarımı tıklayın sekmelerde tıklayın

<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" 
    /> 

ve java sınıf dosyası

tab_activity.xml: Bununla

public class SimpleTabsActivity extends AppCompatActivity { 

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

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

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

Ben sekme görünümü alıyorum. Ancak, burada, uygulama adının yanındaki oku nasıl kaldırabilirim? ve sürgülü sekmeler çalışıyor ancak herhangi bir sekmeyi tıkladığımda (tab1/tab2/tab3) click olayı çalışmıyor.

enter image description here

+0

Çalışma kod burada TabLayout için de geçerlidir = tıklanabilir ayarlayın: http : //stackoverflow.com/questions/31698756/remove-line-break-in-tablayout/32547335#32547335 –

+0

'setContentView (rtlayout.activity_simple_tabs)' kullanıyorsunuz ama tab_activity.xml' - Gerçekten kullanıyorsun? – ianhanniballake

+0

Parmağınızla parmağınızı ikiye katlamak nasıl yapılır, ikinci bir bekçi https://stackoverflow.com/questions/9650265/how-do-disable-paging-by-swiping-with-finger-in-viewpager-but-still-be- Yapabilir-to-s/ –

cevap

4

Bunu kullanmak gerektiğini düşünüyorum: parçaları ekleme, PagerAdapter sınıf eklemek

MainActivity.java

 @Override 
     protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_main); 
      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); 
      setSupportActionBar(toolbar); 

      TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout); 
      tabLayout.addTab(tabLayout.newTab().setText("Tab 1")); 
      tabLayout.addTab(tabLayout.newTab().setText("Tab 2")); 
      tabLayout.addTab(tabLayout.newTab().setText("Tab 3")); 
      tabLayout.setTabGravity(TabLayout.GRAVITY_FILL); 

      final ViewPager viewPager = (ViewPager) findViewById(R.id.pager); 
      final PagerAdapter adapter = new PagerAdapter 
        (getSupportFragmentManager(), tabLayout.getTabCount()); 
      viewPager.setAdapter(adapter); 
      viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout)); 
      tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { 
       @Override 
       public void onTabSelected(TabLayout.Tab tab) { 
        viewPager.setCurrentItem(tab.getPosition()); 
       } 

       @Override 
       public void onTabUnselected(TabLayout.Tab tab) { 

       } 

       @Override 
       public void onTabReselected(TabLayout.Tab tab) { 

       } 
      }); 
     } 

     @Override 
     public boolean onCreateOptionsMenu(Menu menu) { 
      getMenuInflater().inflate(R.menu.menu_simple_tabs, menu); 
      return true; 
     } 

..

activity_main.xml ben bu işe gerektiğini düşünüyorum

<RelativeLayout 
    android:id="@+id/main_layout" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:background="?attr/colorPrimary" 
     android:elevation="6dp" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar" 
     app:popupTheme="@style/ThemeOverlay.AppCompat.Light"/> 

    <android.support.design.widget.TabLayout 
     android:id="@+id/tab_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/toolbar" 
     android:background="?attr/colorPrimary" 
     android:elevation="6dp" 
     android:minHeight="?attr/actionBarSize" 
     android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"/> 

    <android.support.v4.view.ViewPager 
     android:id="@+id/pager" 
     android:layout_width="match_parent" 
     android:layout_height="fill_parent" 
     android:layout_below="@id/tab_layout"/> 

</RelativeLayout> 

..

+0

Bu artık "PagerAdapter özetidir; örneklenemez" hatası ile çalışır. – FazJaxton

-1

ben Sorununuz burada aslında görüntülediğiniz istediğiniz şeyin ipucu elde değilken TabView içine şeyleri karıştırmak için çalışıyor kaynaklandığını düşünüyorum.

Aslında ana etkinlik ayarlarınız için kenar çubuğu menüsü kullanmıyorsanız, ActionBar'ı kullanmanızı öneririm. Burada sadece genel kodlarım var ve buna göre parça adlarını yükleyebilirsiniz. senin MainActivity.xml içi

protected void onCreate(android.os.Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     ActionBar bar = getActionBar(); 
     bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 

     Tab listTab = bar.newTab().setText(R.string.list_title); 
     Tab generalTab = bar.newTab().setText(R.string.generalsettings); 
     Tab faqtab = bar.newTab().setText(R.string.faq); 
     Tab abouttab = bar.newTab().setText(R.string.about); 

     listTab.setTabListener(new TabListener<ProfileList>("profiles", ProfileList.class)); 
     generalTab.setTabListener(new TabListener<GeneralSettings>("settings", GeneralSettings.class)); 
     faqtab.setTabListener(new TabListener<FaqFragment>("faq", FaqFragment.class)); 
     abouttab.setTabListener(new TabListener<AboutFragment>("about", AboutFragment.class)); 

     bar.addTab(listTab); 
     bar.addTab(generalTab); 
     bar.addTab(faqtab); 
     bar.addTab(abouttab); 

     if(SendDumpFragment.getLastestDump(this)!=null) { 
      Tab sendDump = bar.newTab().setText(R.string.crashdump); 
      sendDump.setTabListener(new TabListener<SendDumpFragment>("crashdump",SendDumpFragment.class)); 
      bar.addTab(sendDump); 
     } 

    } 

    protected class TabListener<T extends Fragment> implements ActionBar.TabListener 
    { 
     private Fragment mFragment; 
     private String mTag; 
     private Class<T> mClass; 


     public TabListener(String tag, Class<T> clz) { 
      mTag = tag; 
      mClass = clz; 

      // Check to see if we already have a fragment for this tab, probably 
      // from a previously saved state. If so, deactivate it, because our 
      // initial state is that a tab isn't shown. 
      mFragment = getFragmentManager().findFragmentByTag(mTag); 
      if (mFragment != null && !mFragment.isDetached()) { 
       FragmentTransaction ft = getFragmentManager().beginTransaction(); 
       ft.detach(mFragment); 
       ft.commit(); 
      } 
     } 

     public void onTabSelected(Tab tab, FragmentTransaction ft) { 
      if (mFragment == null) { 
       mFragment = Fragment.instantiate(MainActivity.this, mClass.getName()); 
       ft.add(android.R.id.content, mFragment, mTag); 
      } else { 
       ft.attach(mFragment); 
      } 
     } 

     public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
      if (mFragment != null) { 
       ft.detach(mFragment); 
      } 
     } 


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

     } 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 

     System.out.println(data); 


    } 
+0

Zaten bunlarla çalıştım ... bilirsin ... android.app.ActionBar.Tab ... android-6'da kullanımdan kaldırıldı mı? – Preeti

+0

Hedefiniz 6.0+ ise, bu örnekte burada gösterildiği şekilde kullanın: http: //blog.grafixartist.com/material-design-tabs-with-android-tasarım-destek-kütüphane/ – childofthehorn

0

sadece bir referans olarak kullanabileceği

<android.support.design.widget.TabLayout 
    android:id="@+id/tabs_home" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    app:tabPaddingStart="0dp" 
    app:tabPaddingEnd="0dp" 
    app:tabIndicatorHeight="3dp" 
    android:clickable="true" 
    app:tabMaxWidth="0dp"/> 
İlgili konular