2014-09-23 6 views
5

टैब एडाप्टर में शीर्षक के बजाय टैब में आइकन कैसे जोड़ सकता है जो एंड्रॉइड में FragmentPagerAdapter को विस्तारित करता है? मैं अपने प्रोजेक्टटैब एडाप्टर में आइकन जोड़ें जो FragmentPagerAdapter

में कोई भी सहायता कृपया एक्शन बार का उपयोग नहीं करना चाहता हूं ??

public class TabsPagerAdapter extends FragmentPagerAdapter { 

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

    private final int[] icons = {R.drawable.home,R.drawable.buddies,R.drawable.notification,R.drawable.history}; 

    @Override 
    public CharSequence getPageTitle(int position) { 
     if(position == 0) 
      return "Home"; 
     else if(position == 1) 
      return "Buddies"; 
     else if(position == 2) 
      return "History "; 
     else 
      return "Notifications"; 
    } 

    @Override 
    public Fragment getItem(int index) { 

     switch (index) { 
      case 0: 
       HomeFragment home = new HomeFragment(); 
       return home; 
      case 1: 
       return new BuddiesFragment(); 
      case 2: 
       return new HistoryFragment(); 
      case 3: 
       return new NotificationsFragment(); 
     } 

     return null; 
    } 


    @Override 
    public int getCount() { 
     return 4; 
    } 

} 

भी मैं इस तरीकों की कोशिश की लेकिन

@Override सार्वजनिक पूर्णांक getPageIconResId (पूर्णांक स्थिति) { वापसी प्रतीक [स्थिति] काम नहीं करता है; }

@Override 
    public boolean isViewFromObject(View view, Object o) { 
     return o == view; 
    } 

उत्तर

1

मेरी टैब छवियों के रूप में मैं वेक्टर ड्रॉएबल उपयोग कर रहा हूँ, एपीआई> 21 पर यह केवल काम करता है। लेकिन मुझे यकीन है कि आप छवि चित्रों का उपयोग उसी तरह कर सकते हैं।

class MyPagerAdapter extends FragmentPagerAdapter { 

    private String[] tabText = getResources().getStringArray(R.array.tabs); 

    public MyPagerAdapter(FragmentManager fm) { 
     super(fm); 
     tabText = getResources().getStringArray(R.array.tabs); 

    } 

    @Override 
    public Fragment getItem(int position) { 

     Fragment fragment=null; 

     if (position == 0) 
      fragment = new FragmentA(); 
     if (position == 1) 
      fragment = new FragmentB(); 
     if (position == 2) 
      fragment=new FragmentC(); 

     return fragment; 
    } 




    @Override 
    public CharSequence getPageTitle(int position) { 

     SpannableString spannableString = null; 

     if (position == 0) { 
      //use the MrVector library to inflate vector drawable inside tab 
      Drawable drawable = MrVector.inflate(getResources(), R.drawable.vector_add); 
      //set the size of drawable to 36 pixels 
      drawable.setBounds(0, 0, 36, 36); 
      ImageSpan imageSpan = new ImageSpan(drawable); 
      //to make our tabs icon only, set the Text as blank string with white space 
      spannableString = new SpannableString(" "); 
      spannableString.setSpan(imageSpan, 0, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
     } 
     if (position == 1) { 
      //use the MrVector library to inflate vector drawable inside tab 
      Drawable drawable = MrVector.inflate(getResources(), R.drawable.vector_list); 
      //set the size of drawable to 36 pixels 
      drawable.setBounds(0, 0, 36, 36); 
      ImageSpan imageSpan = new ImageSpan(drawable); 
      //to make our tabs icon only, set the Text as blank string with white space 
      spannableString = new SpannableString(" "); 
      spannableString.setSpan(imageSpan, 0, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
     } 
     if (position == 2) { 
      //use the MrVector library to inflate vector drawable inside tab 
      Drawable drawable = MrVector.inflate(getResources(), R.drawable.vector_settings); 
      //set the size of drawable to 36 pixels 
      drawable.setBounds(0, 0, 36, 36); 
      ImageSpan imageSpan = new ImageSpan(drawable); 
      //to make our tabs icon only, set the Text as blank string with white space 
      spannableString = new SpannableString(" "); 
      spannableString.setSpan(imageSpan, 0, spannableString.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
     } 
     return spannableString; 
    } 

    @Override 
    public int getCount() { 
     return 3; 
    } 
चित्रों के साथ

:

यहाँ मेरी कोड है

@Override 
    public CharSequence getPageTitle(int position) { 

     SpannableStringBuilder sb = new SpannableStringBuilder(" "); 

     if (position == 0) { 
      Drawable drawable = getDrawable(R.drawable.ic_action_add); 
      drawable.setBounds(0, 0, 48, 48); 
      ImageSpan imageSpan = new ImageSpan(drawable); 
      //to make our tabs icon only, set the Text as blank string with white space 
      sb.setSpan(imageSpan, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
     } 
     if (position == 1) { 
      Drawable drawable = getDrawable(R.drawable.ic_action_list_2); 
      drawable.setBounds(0, 0, 48, 48); 
      ImageSpan imageSpan = new ImageSpan(drawable); 
      //to make our tabs icon only, set the Text as blank string with white space 
      sb.setSpan(imageSpan, 0, 1, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); 
     } 

     return sb; 
    } 

MrVector liabrary: https://github.com/telly/MrVector
मैं VectorDrawable को एसवीजी कन्वर्ट करने के लिए उपयोग करने के एक उपकरण: http://inloop.github.io/svg2android/

1

मैं इस पुस्तकालय का इस्तेमाल किया https://github.com/pizza/MaterialTabs मेरे प्रोजेक्ट में टेक्स्ट और आइकन के साथ टैब जोड़ने के लिए। https://github.com/pizza/MaterialTabs/blob/master/sample/src/io/karim/materialtabs/sample/MainActivity.java#L397

परिवर्तन की हद तक अपने FragmentPagerAdapter वर्ग MaterialTabs.CustomTabProvider इंटरफ़ेस को लागू करने के लिए है:

यहाँ एक उदाहरण से पता चलता है कि कैसे टैब शीर्षक में केवल माउस का प्रयोग है। यह getCustomTabView विधि जोड़ता है जहां आप अपने टैब में आइकन सेट कर सकते हैं।

@Override 
public View getCustomTabView(ViewGroup parent, int position) { 
    ImageView imageView = new ImageView(context); 
    imageView.setImageDrawable(getResources().getDrawable(ICONS[position])); 
    return imageView; 
} 
संबंधित मुद्दे