/** @see TextView#setCompoundDrawablesWithIntrinsicBounds(int, int, int, int) */ private void checkCompoundDrawable(Context context, AttributeSet attrs, View view) { if (view instanceof TextView) { TextView textView = (TextView) view; final int drawablePadding = textView.getCompoundDrawablePadding(); final TypedValue value = new TypedValue(); TypedArray array = context.obtainStyledAttributes(attrs, com.android.internal.R.styleable.TextView, 0, 0); array.getValue(com.android.internal.R.styleable.TextView_drawableLeft, value); final int drawableLeftResId = value.resourceId; array.getValue(com.android.internal.R.styleable.TextView_drawableTop, value); final int drawableTopResId = value.resourceId; array.getValue(com.android.internal.R.styleable.TextView_drawableRight, value); final int drawableRightResId = value.resourceId; array.getValue(com.android.internal.R.styleable.TextView_drawableBottom, value); final int drawableBottomResId = value.resourceId; array.recycle(); EnvRes drawableLeftRes = new EnvRes(drawableLeftResId); EnvRes drawableTopRes = new EnvRes(drawableTopResId); EnvRes drawableRightRes = new EnvRes(drawableRightResId); EnvRes drawableBottomRes = new EnvRes(drawableBottomResId); if (drawableLeftRes.isValid() || drawableTopRes.isValid() || drawableRightRes.isValid() || drawableBottomRes.isValid()) { textView.setCompoundDrawablesWithIntrinsicBounds( drawableLeftRes.getResid(), drawableTopRes.getResid(), drawableRightRes.getResid(), drawableBottomRes.getResid()); textView.setCompoundDrawablePadding(drawablePadding); } } }
@Override public View createTabView(ViewGroup container, int position, PagerAdapter adapter) { View tabView = mInflater.inflate(mTabViewLayoutId, container, false); View tabTextOrImageView = tabView.findViewById(mTabViewTextOrImageViewId); switch (mTabMode) { case TITLE_ONLY: { TextView tabTextView = (TextView) tabTextOrImageView; tabTextView.setText(adapter.getPageTitle(position)); // TODO Set Color? break; } case ICON_ONLY: { if (adapter instanceof IconTabProvider) { ImageView tabImageView = (ImageView) tabTextOrImageView; tabImageView.setImageResource(((IconTabProvider) adapter).getPageIconResId(position)); // TODO Set Color? } else { throw new ClassCastException( "pager adapter must implements NiceTabLayout.IconTabProvider"); } break; } case BOTH: { TextView tabTextView = (TextView) tabTextOrImageView; tabTextView.setText(adapter.getPageTitle(position)); if (adapter instanceof IconTabProvider) { final int drawablePadding = tabTextView.getCompoundDrawablePadding(); tabTextView.setCompoundDrawablesWithIntrinsicBounds( 0, ((IconTabProvider) adapter).getPageIconResId(position), 0, 0); tabTextView.setCompoundDrawablePadding(drawablePadding); } else { throw new ClassCastException( "pager adapter must implements NiceTabLayout.IconTabProvider"); } // TODO Set Color? break; } default: { throw new IllegalStateException("Invalid tab mode: " + mTabMode); } } return tabView; }