Icon selector not working with PagerSlidingTabStrips

匿名 (未验证) 提交于 2019-12-03 03:05:02

问题:

I've integrated PagerSlidingTabStrips with Icons only. But I selector on icons are not working with PagerSlidingTabStrips.

xml

<PagerSlidingTabStrip     android:id="@+id/pager_sliding_tab_strip"     android:layout_width="fill_parent"     android:layout_height="45dip"     android:background="@color/white"     app:pstsDividerColor="#FFFFA500"     app:pstsIndicatorColor="#FFFFA500"     app:pstsTabPaddingLeftRight="14dip"     app:pstsUnderlineColor="#FFFFA500" /> 

Added implements IconTabProvider on my ViewPager which works perfectly.

public class ViewPagerAdapter extends FragmentPagerAdapter implements IconTabProvider {     final int PAGE_COUNT = 3;     private final int[] ICONS = { R.drawable.tab_icon_zname_contacts_selector, R.drawable.tab_icon_zname_friends_selector,          R.drawable.tab_icon_zname_call_log_selector };      @Override     public int getPageIconResId(int position) {         return ICONS[position];     } } 

iconSelector

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android">      <item android:drawable="@drawable/tab_icon_zname_call_log_selected" android:state_selected="true"/>     <item android:drawable="@drawable/tab_icon_zname_call_log" android:state_selected="false"/>  </selector> 

How to make icon selector work with PagerSlidingTabStrips? I wanted icon with Orange color when that tab is selected but it's returning grey one only no matter what.

回答1:

I've found fix for Icon_Selector for PagerSlidingTabStrips within it's closed issues.

Modify PagerSlidingTabStrips.java and add following code

  private int currentPageSelected = 0; //Fix : ICON SELECTOR 

Append on NotifyDataSetChanged method inside OnGlobalLayoutListener

  currentPosition = pager.getCurrentItem();   tabsContainer.getChildAt(currentPosition).setSelected(true); //ADDED THESE   scrollToChild(currentPosition, 0); 

Modified the onPageSelected():

@Override public void onPageSelected(int position) { tabsContainer.getChildAt(currentPageSelected).setSelected(false); currentPageSelected = position; tabsContainer.getChildAt(position).setSelected(true);  if (delegatePageListener != null) {      delegatePageListener.onPageSelected(position  } } 

IconSelector

 <?xml version="1.0" encoding="utf-8"?>  <selector xmlns:android="http://schemas.android.com/apk/res/android">  <item android:drawable="@drawable/tab_icon_zname_call_log_selected" android:state_selected="true"/>  <item android:drawable="@drawable/tab_icon_zname_call_log_selected" android:state_pressed="true"/>  <item android:drawable="@drawable/tab_icon_zname_call_log"/>   </selector> 

PagerSlidingTabStrips.java

import java.util.Locale;  import android.annotation.SuppressLint; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.Typeface; import android.os.Build; import android.os.Parcel; import android.os.Parcelable; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.AttributeSet; import android.util.DisplayMetrics; import android.util.TypedValue; import android.view.Gravity; import android.view.View; import android.view.ViewTreeObserver.OnGlobalLayoutListener; import android.widget.HorizontalScrollView; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView;  import com.netdoers.zname.R;  public class PagerSlidingTabStrip extends HorizontalScrollView {      public interface IconTabProvider {         public int getPageIconResId(int position);     }      // @formatter:off     private static final int[] ATTRS = new int[] {         android.R.attr.textSize,         android.R.attr.textColor     };     // @formatter:on      private LinearLayout.LayoutParams defaultTabLayoutParams;     private LinearLayout.LayoutParams expandedTabLayoutParams;      private final PageListener pageListener = new PageListener();     public OnPageChangeListener delegatePageListener;      private LinearLayout tabsContainer;     private ViewPager pager;      private int tabCount;      private int currentPosition = 0;     private float currentPositionOffset = 0f;      private Paint rectPaint;     private Paint dividerPaint;      private int currentPageSelected = 0; //Fix : ICON SELECTOR      private int indicatorColor = 0xFF666666;     private int underlineColor = 0x1A000000;     private int dividerColor = 0x1A000000;      private boolean shouldExpand = false;     private boolean textAllCaps = true;      private int scrollOffset = 52;     private int indicatorHeight = 8;     private int underlineHeight = 2;     private int dividerPadding = 12;     private int tabPadding = 24;     private int dividerWidth = 1;      private int tabTextSize = 12;     private int tabTextColor = 0xFF666666;     private Typeface tabTypeface = null;     private int tabTypefaceStyle = Typeface.BOLD;      private int lastScrollX = 0;      private int tabBackgroundResId = R.drawable.background_tab;      private Locale locale;      public PagerSlidingTabStrip(Context context) {         this(context, null);     }      public PagerSlidingTabStrip(Context context, AttributeSet attrs) {         this(context, attrs, 0);     }      public PagerSlidingTabStrip(Context context, AttributeSet attrs, int defStyle) {         super(context, attrs, defStyle);          setFillViewport(true);         setWillNotDraw(false);          tabsContainer = new LinearLayout(context);         tabsContainer.setOrientation(LinearLayout.HORIZONTAL);         tabsContainer.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));         addView(tabsContainer);          DisplayMetrics dm = getResources().getDisplayMetrics();          scrollOffset = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, scrollOffset, dm);         indicatorHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, indicatorHeight, dm);         underlineHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, underlineHeight, dm);         dividerPadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dividerPadding, dm);         tabPadding = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, tabPadding, dm);         dividerWidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dividerWidth, dm);         tabTextSize = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, tabTextSize, dm);          // get system attrs (android:textSize and android:textColor)          TypedArray a = context.obtainStyledAttributes(attrs, ATTRS);          tabTextSize = a.getDimensionPixelSize(0, tabTextSize);         tabTextColor = a.getColor(1, tabTextColor);          a.recycle();          // get custom attrs          a = context.obtainStyledAttributes(attrs, R.styleable.PagerSlidingTabStrip);          indicatorColor = a.getColor(R.styleable.PagerSlidingTabStrip_pstsIndicatorColor, indicatorColor);         underlineColor = a.getColor(R.styleable.PagerSlidingTabStrip_pstsUnderlineColor, underlineColor);         dividerColor = a.getColor(R.styleable.PagerSlidingTabStrip_pstsDividerColor, dividerColor);         indicatorHeight = a.getDimensionPixelSize(R.styleable.PagerSlidingTabStrip_pstsIndicatorHeight, indicatorHeight);         underlineHeight = a.getDimensionPixelSize(R.styleable.PagerSlidingTabStrip_pstsUnderlineHeight, underlineHeight);         dividerPadding = a.getDimensionPixelSize(R.styleable.PagerSlidingTabStrip_pstsDividerPadding, dividerPadding);         tabPadding = a.getDimensionPixelSize(R.styleable.PagerSlidingTabStrip_pstsTabPaddingLeftRight, tabPadding);         tabBackgroundResId = a.getResourceId(R.styleable.PagerSlidingTabStrip_pstsTabBackground, tabBackgroundResId);         shouldExpand = a.getBoolean(R.styleable.PagerSlidingTabStrip_pstsShouldExpand, shouldExpand);         scrollOffset = a.getDimensionPixelSize(R.styleable.PagerSlidingTabStrip_pstsScrollOffset, scrollOffset);         textAllCaps = a.getBoolean(R.styleable.PagerSlidingTabStrip_pstsTextAllCaps, textAllCaps);          a.recycle();          rectPaint = new Paint();         rectPaint.setAntiAlias(true);         rectPaint.setStyle(Style.FILL);          dividerPaint = new Paint();         dividerPaint.setAntiAlias(true);         dividerPaint.setStrokeWidth(dividerWidth);          defaultTabLayoutParams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);         expandedTabLayoutParams = new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 1.0f);          if (locale == null) {             locale = getResources().getConfiguration().locale;         }     }      public void setViewPager(ViewPager pager) {         this.pager = pager;          if (pager.getAdapter() == null) {             throw new IllegalStateException("ViewPager does not have adapter instance.");         }          pager.setOnPageChangeListener(pageListener);          notifyDataSetChanged();     }      public void setOnPageChangeListener(OnPageChangeListener listener) {         this.delegatePageListener = listener;     }      public void notifyDataSetChanged() {          tabsContainer.removeAllViews();          tabCount = pager.getAdapter().getCount();          for (int i = 0; i < tabCount; i++) {              if (pager.getAdapter() instanceof IconTabProvider) {                 addIconTab(i, ((IconTabProvider) pager.getAdapter()).getPageIconResId(i));             } else {                 addTextTab(i, pager.getAdapter().getPageTitle(i).toString());             }          }          updateTabStyles();          getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {              @SuppressWarnings("deprecation")             @SuppressLint("NewApi")             @Override             public void onGlobalLayout() {                  if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {                     getViewTreeObserver().removeGlobalOnLayoutListener(this);                 } else {                     getViewTreeObserver().removeOnGlobalLayoutListener(this);                 }                  currentPosition = pager.getCurrentItem();                 tabsContainer.getChildAt(currentPosition).setSelected(true);//Fix : ICON SELECTOR                 scrollToChild(currentPosition, 0);             }         });      }      private void addTextTab(final int position, String title) {          TextView tab = new TextView(getContext());         tab.setText(title);         tab.setGravity(Gravity.CENTER);         tab.setSingleLine();          addTab(position, tab);     }      private void addIconTab(final int position, int resId) {          ImageButton tab = new ImageButton(getContext());         tab.setImageResource(resId);          addTab(position, tab);      }      private void addTab(final int position, View tab) {         tab.setFocusable(true);         tab.setOnClickListener(new OnClickListener() {             @Override             public void onClick(View v) {                 pager.setCurrentItem(position);             }         });          tab.setPadding(tabPadding, 0, tabPadding, 0);         tabsContainer.addView(tab, position, shouldExpand ? expandedTabLayoutParams : defaultTabLayoutParams);     }      private void updateTabStyles() {          for (int i = 0; i < tabCount; i++) {              View v = tabsContainer.getChildAt(i);              v.setBackgroundResource(tabBackgroundResId);              if (v instanceof TextView) {                  TextView tab = (TextView) v;                 tab.setTextSize(TypedValue.COMPLEX_UNIT_PX, tabTextSize);                 tab.setTypeface(tabTypeface, tabTypefaceStyle);                 tab.setTextColor(tabTextColor);                  // setAllCaps() is only available from API 14, so the upper case is made manually if we are on a                 // pre-ICS-build                 if (textAllCaps) {                     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {                         tab.setAllCaps(true);                     } else {                         tab.setText(tab.getText().toString().toUpperCase(locale));                     }                 }             }         }      }      private void scrollToChild(int position, int offset) {          if (tabCount == 0) {             return;         }          int newScrollX = tabsContainer.getChildAt(position).getLeft() + offset;          if (position > 0 || offset > 0) {             newScrollX -= scrollOffset;         }          if (newScrollX != lastScrollX) {             lastScrollX = newScrollX;             scrollTo(newScrollX, 0);         }      }      @Override     protected void onDraw(Canvas canvas) {         super.onDraw(canvas);          if (isInEditMode() || tabCount == 0) {             return;         }          final int height = getHeight();          // draw indicator line          rectPaint.setColor(indicatorColor);          // default: line below current tab         View currentTab = tabsContainer.getChildAt(currentPosition);         float lineLeft = currentTab.getLeft();         float lineRight = currentTab.getRight();          // if there is an offset, start interpolating left and right coordinates between current and next tab         if (currentPositionOffset > 0f && currentPosition < tabCount - 1) {              View nextTab = tabsContainer.getChildAt(currentPosition + 1);             final float nextTabLeft = nextTab.getLeft();             final float nextTabRight = nextTab.getRight();              lineLeft = (currentPositionOffset * nextTabLeft + (1f - currentPositionOffset) * lineLeft);             lineRight = (currentPositionOffset * nextTabRight + (1f - currentPositionOffset) * lineRight);         }          canvas.drawRect(lineLeft, height - indicatorHeight, lineRight, height, rectPaint);          // draw underline          rectPaint.setColor(underlineColor);         canvas.drawRect(0, height - underlineHeight, tabsContainer.getWidth(), height, rectPaint);          // draw divider          dividerPaint.setColor(dividerColor);         for (int i = 0; i < tabCount - 1; i++) {             View tab = tabsContainer.getChildAt(i);             canvas.drawLine(tab.getRight(), dividerPadding, tab.getRight(), height - dividerPadding, dividerPaint);         }     }      private class PageListener implements OnPageChangeListener {          @Override         public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {              currentPosition = position;             currentPositionOffset = positionOffset;              scrollToChild(position, (int) (positionOffset * tabsContainer.getChildAt(position).getWidth()));              invalidate();              if (delegatePageListener != null) {                 delegatePageListener.onPageScrolled(position, positionOffset, positionOffsetPixels);             }         }          @Override         public void onPageScrollStateChanged(int state) {             if (state == ViewPager.SCROLL_STATE_IDLE) {                 scrollToChild(pager.getCurrentItem(), 0);             }              if (delegatePageListener != null) {                 delegatePageListener.onPageScrollStateChanged(state);             }         }          @Override         public void onPageSelected(int position) {             /**              * Fix : ICON SELECTOR              */             tabsContainer.getChildAt(currentPageSelected).setSelected(false);             currentPageSelected = position;             tabsContainer.getChildAt(position).setSelected(true);             /**              * Fix : ICON SELECTOR              */              if (delegatePageListener != null) {                 delegatePageListener.onPageSelected(position);             }         }      }      public void setIndicatorColor(int indicatorColor) {         this.indicatorColor = indicatorColor;         invalidate();     }      public void setIndicatorColorResource(int resId) {         this.indicatorColor = getResources().getColor(resId);         invalidate();     }      public int getIndicatorColor() {         return this.indicatorColor;     }      public void setIndicatorHeight(int indicatorLineHeightPx) {         this.indicatorHeight = indicatorLineHeightPx;         invalidate();     }      public int getIndicatorHeight() {         return indicatorHeight;     }      public void setUnderlineColor(int underlineColor) {         this.underlineColor = underlineColor;         invalidate();     }      public void setUnderlineColorResource(int resId) {         this.underlineColor = getResources().getColor(resId);         invalidate();     }      public int getUnderlineColor() {         return underlineColor;     }      public void setDividerColor(int dividerColor) {         this.dividerColor = dividerColor;         invalidate();     }      public void setDividerColorResource(int resId) {         this.dividerColor = getResources().getColor(resId);         invalidate();     }      public int getDividerColor() {         return dividerColor;     }      public void setUnderlineHeight(int underlineHeightPx) {         this.underlineHeight = underlineHeightPx;         invalidate();     }      public int getUnderlineHeight() {         return underlineHeight;     }      public void setDividerPadding(int dividerPaddingPx) {         this.dividerPadding = dividerPaddingPx;         invalidate();     }      public int getDividerPadding() {         return dividerPadding;     }      public void setScrollOffset(int scrollOffsetPx) {         this.scrollOffset = scrollOffsetPx;         invalidate();     }      public int getScrollOffset() {         return scrollOffset;     }      public void setShouldExpand(boolean shouldExpand) {         this.shouldExpand = shouldExpand;         requestLayout();     }      public boolean getShouldExpand() {         return shouldExpand;     }      public boolean isTextAllCaps() {         return textAllCaps;     }      public void setAllCaps(boolean textAllCaps) {         this.textAllCaps = textAllCaps;     }      public void setTextSize(int textSizePx) {         this.tabTextSize = textSizePx;         updateTabStyles();     }      public int getTextSize() {         return tabTextSize;     }      public void setTextColor(int textColor) {         this.tabTextColor = textColor;         updateTabStyles();     }      public void setTextColorResource(int resId) {         this.tabTextColor = getResources().getColor(resId);         updateTabStyles();     }      public int getTextColor() {         return tabTextColor;     }      public void setTypeface(Typeface typeface, int style) {         this.tabTypeface = typeface;         this.tabTypefaceStyle = style;         updateTabStyles();     }      public void setTabBackground(int resId) {         this.tabBackgroundResId = resId;     }      public int getTabBackground() {         return tabBackgroundResId;     }      public void setTabPaddingLeftRight(int paddingPx) {         this.tabPadding = paddingPx;         updateTabStyles();     }      public int getTabPaddingLeftRight() {         return tabPadding;     }      @Override     public void onRestoreInstanceState(Parcelable state) {         SavedState savedState = (SavedState) state;         super.onRestoreInstanceState(savedState.getSuperState());         currentPosition = savedState.currentPosition;         requestLayout();     }      @Override     public Parcelable onSaveInstanceState() {         Parcelable superState = super.onSaveInstanceState();         SavedState savedState = new SavedState(superState);         savedState.currentPosition = currentPosition;         return savedState;     }      static class SavedState extends BaseSavedState {         int currentPosition;          public SavedState(Parcelable superState) {             super(superState);         }          private SavedState(Parcel in) {             super(in);             currentPosition = in.readInt();         }          @Override         public void writeToParcel(Parcel dest, int flags) {             super.writeToParcel(dest, flags);             dest.writeInt(currentPosition);         }          public static final Parcelable.Creator<SavedState> CREATOR = new Parcelable.Creator<SavedState>() {             @Override             public SavedState createFromParcel(Parcel in) {                 return new SavedState(in);             }              @Override             public SavedState[] newArray(int size) {                 return new SavedState[size];             }         };     }  } 

ViewPagerAdapter.java which we need to supply to ViewPager

import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter;  import com.netdoers.zname.R; import com.netdoers.zname.utils.PagerSlidingTabStrip.IconTabProvider;  /**  * @author Vikalp Patel (vikalppatelce@yahoo.com)  * @category Ui Helper  *   */ public class ViewPagerAdapter extends FragmentPagerAdapter  /**  * PAGERSLIDINGTABSTIPS   */ implements IconTabProvider  {     // Declare the number of ViewPager pages //  final int PAGE_COUNT = 5;     final int PAGE_COUNT = 3;      /**      * PAGERSLIDINGTABSTRIPS      */     private final int[] ICONS = { R.drawable.tab_icon_zname_contact_selector, R.drawable.tab_icon_zname_friends_selector,              R.drawable.tab_icon_zname_call_log_selector };     /**      * SLIDINGTABLAYOUT      */     /*private int[] imageResId = {             R.drawable.tab_icon_zname_contact_selector,             R.drawable.tab_icon_zname_friends_selector,             R.drawable.tab_icon_zname_call_log_selected     };      @Override     public CharSequence getPageTitle(int position) {         Drawable image = Zname.getApplication().getApplicationContext().getResources().getDrawable(imageResId[position]);         image.setBounds(0, 0, image.getIntrinsicWidth(), image.getIntrinsicHeight());         SpannableString sb = new SpannableString(" ");         ImageSpan imageSpan = new ImageSpan(image, ImageSpan.ALIGN_BOTTOM);         sb.setSpan(imageSpan, 0, 1, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);         return sb;     }*/     /**      * SLIDINGTABLAYOUT      */      /**      * @param fm      */     public ViewPagerAdapter(FragmentManager fm) {         super(fm);     }      /* (non-Javadoc)      * @see android.support.v4.app.FragmentPagerAdapter#getItem(int)      */     @Override     public Fragment getItem(int item) {         switch (item) {              // Open HomeFragment.java         case 0:             ContactsFragment homeFragment = new ContactsFragment();             return homeFragment;             // Open PlaceOrderFragment.java         case 1:             GroupsFragment groupsFragment = new GroupsFragment();             return groupsFragment;         case 2:             CallLogsFragment callLogsFragment = new CallLogsFragment();             return callLogsFragment;             }         return null;     }      /* (non-Javadoc)      * @see android.support.v4.view.PagerAdapter#getCount()      */     @Override     public int getCount() {         // TODO Auto-generated method stub         return PAGE_COUNT;     }      /**      * PAGERSLIDINGTABSTRIPS       */     @Override     public int getPageIconResId(int position) {         // TODO Auto-generated method stub         return ICONS[position];     }  } 


回答2:

My hard way to do that...

// Give the PagerSlidingTabStrip the ViewPager tabsStrip = (PagerSlidingTabStrip) findViewById(R.id.tabs); // Attach the view pager to the tab strip tabsStrip.setViewPager(mViewPager);  Field field = null; try {     field = PagerSlidingTabStrip.class.getDeclaredField("tabsContainer");     field.setAccessible(true);     LinearLayout tabsContainer = (LinearLayout) field.get(tabsStrip);     tabsContainer.getChildAt(0).setSelected(true);  } catch (NoSuchFieldException e) {     e.printStackTrace(); } catch (IllegalAccessException e) {     e.printStackTrace(); }  tabsStrip.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {      private int currentPageSelected = 0;      @Override     public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {      }      @Override     public void onPageSelected(int position) {         Log.v("onPageSelected", tabsStrip.getClass().toString());          Field field = null;         try {             field = PagerSlidingTabStrip.class.getDeclaredField("tabsContainer");             field.setAccessible(true);             LinearLayout tabsContainer = (LinearLayout) field.get(tabsStrip);             tabsContainer.getChildAt(currentPageSelected).setSelected(false);             currentPageSelected = position;             tabsContainer.getChildAt(position).setSelected(true);          } catch (NoSuchFieldException e) {             e.printStackTrace();         } catch (IllegalAccessException e) {             e.printStackTrace();         }       }      @Override     public void onPageScrollStateChanged(int state) {      } }); 


回答3:

Just add app:pstsTabSwitch="true" to PagerSlidingTabStrip:

                    <com.astuetz.PagerSlidingTabStrip                     android:id="@+id/tabs"                     app:pstsShouldExpand="true"                     android:layout_width="150dp"                     android:layout_height="match_parent"                     android:textSize="28sp"                     app:pstsIndicatorColor="#2F041F"                     app:pstsIndicatorHeight="2dp"                     app:pstsTabPaddingLeftRight="14dp"                     app:pstsTabSwitch="true"/> 

My adapter:

SampleFragmentPagerAdapter extends FragmentPagerAdapter implements PagerSlidingTabStrip.IconTabProvider {  private int TAB_ICONS[] = {R.drawable.io_logo, R.drawable.ic_chat_tab_unactive}; private final int[] SWITCH_ICONS = { R.drawable.tab_one, R.drawable.tab_two};  public SampleFragmentPagerAdapter(FragmentManager fm) {     super(fm); }  @Override public int getCount() {     return TAB_ICONS.length; }  @Override public Fragment getItem(int position) {     if(position == 0){         return new SwipeFragment();     } else {         return new ConversationsFragment();     } }   @Override public int getPageIconResId(int position) {     return SWITCH_ICONS[position]; } 

}

My selector

<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android">     <item android:state_checked="true" android:drawable="@drawable/io_title" />     <item android:state_pressed="true" android:drawable="@drawable/io_logo"/>     <item android:state_selected="true" android:drawable="@drawable/io_logo"/>     <item android:drawable="@drawable/io_title" /> </selector> 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!