/** @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;
    }