2016-01-23 7 views
5

मेरी एंड्रॉइड प्रोजेक्ट में मैं टैब दृश्य के लिए सामग्री-डिजाइन का उपयोग कर रहा हूं। मेरे पास है:एंड्रॉइड सामग्री डिज़ाइन टैब पर ईवेंट पर क्लिक करें

tab_activity.xml

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

और जावा वर्ग फ़ाइल है:

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); 
     } 
    } 
} 
इस के साथ

मैं टैब दृश्य हो रही है। लेकिन, मैं ऐप नाम के बगल में तीर को कैसे हटा सकता हूं? और, स्लाइडिंग टैब काम कर रहे हैं लेकिन जब मैं किसी भी टैब पर क्लिक करता हूं (टैब 1/टैब 2/टैब 3) क्लिक करें ईवेंट काम नहीं कर रहा है। क्यों ??

enter image description here

+0

कार्य कोड यहाँ है कि आप एक संदर्भ के रूप में उपयोग कर सकते हैं: http : //stackoverflow.com/questions/31698756/remove-line-break-in-tablayout/32547335#32547335 –

+0

आप 'setContentView (R.layout.activity_simple_tabs) का उपयोग कर रहे हैं, लेकिन आपने 'tab_activity.xml' पोस्ट किया है - जो कि हैं आप वास्तव में उपयोग कर रहे हैं? – ianhanniballake

+0

उंगली से स्वाइप अक्षम करने का तरीका है, दूसरा awnser https://stackoverflow.com/questions/9650265/how-do-disable-paging-by-swiping-with-finger-in-viewpager-but-still-be- सक्षम करने के लिए/ –

उत्तर

4

मुझे लगता है कि आप इस का उपयोग करना चाहिए:

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

एक PagerAdapter वर्ग जोड़ने के लिए, टुकड़े जोड़ने ..

activity_main.xml

<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

यह अब त्रुटि के साथ काम नहीं करता है "पेजर एडाप्टर सार है; तत्काल नहीं किया जा सकता"। – FazJaxton

-1

मुझे लगता है कि आपकी समस्या यहां TabView में चीजों मिश्रण करने के लिए जब यह वास्तव में आप क्या चाहते देखी संकेत नहीं मिल रहा है की कोशिश कर रहा से उपजी है।

मैं सुझाव देता हूं कि अगर आप वास्तव में अपने मुख्य गतिविधि सेटअप के लिए साइडबार मेनू का उपयोग नहीं कर रहे हैं तो एक्शनबार का उपयोग करें। यहां मेरे पास सामान्य जेनेरिक सेट हैं और आप तदनुसार आपको टुकड़े नाम लोड कर सकते हैं।

अपने MainActivity.xml के अंदर

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

मैंने पहले से ही इस सब के साथ प्रयास किया है ... क्या आप जानते हैं ... android.app.ActionBar.Tab ... एंड्रॉइड -6 में बहिष्कृत है ?? – Preeti

+0

यदि आपका लक्ष्य 6.0+ है, तो यहां दिए गए अनुसार इस उदाहरण का उपयोग करें: http: //blog.grafixartist।com/material-design-tabs-with-android-design-support-library/ – childofthehorn

0

सिर्फ TabLayout के लिए क्लिक करने योग्य = सेट सच

<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"/> 
संबंधित मुद्दे