コード例 #1
0
    public void update() {
      final ActionBar.Tab tab = mTab;
      final View custom = tab.getCustomView();
      if (custom != null) {
        final ViewParent customParent = custom.getParent();
        if (customParent != this) {
          if (customParent != null) ((ViewGroup) customParent).removeView(custom);
          addView(custom);
        }
        mCustomView = custom;
        if (mTextView != null) mTextView.setVisibility(GONE);
        if (mIconView != null) {
          mIconView.setVisibility(GONE);
          mIconView.setImageDrawable(null);
        }
      } else {
        if (mCustomView != null) {
          removeView(mCustomView);
          mCustomView = null;
        }

        final Drawable icon = tab.getIcon();
        final CharSequence text = tab.getText();

        if (icon != null) {
          if (mIconView == null) {
            ImageView iconView = new ImageView(getContext());
            LayoutParams lp =
                new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            lp.gravity = Gravity.CENTER_VERTICAL;
            iconView.setLayoutParams(lp);
            addView(iconView, 0);
            mIconView = iconView;
          }
          mIconView.setImageDrawable(icon);
          mIconView.setVisibility(VISIBLE);
        } else if (mIconView != null) {
          mIconView.setVisibility(GONE);
          mIconView.setImageDrawable(null);
        }

        if (text != null) {
          if (mTextView == null) {
            CapitalizingTextView textView =
                new CapitalizingTextView(getContext(), null, R.attr.actionBarTabTextStyle);
            textView.setEllipsize(TruncateAt.END);
            LayoutParams lp =
                new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            lp.gravity = Gravity.CENTER_VERTICAL;
            textView.setLayoutParams(lp);
            addView(textView);
            mTextView = textView;
          }
          mTextView.setTextCompat(text);
          mTextView.setVisibility(VISIBLE);
        } else if (mTextView != null) {
          mTextView.setVisibility(GONE);
          mTextView.setText(null);
        }

        if (mIconView != null) {
          mIconView.setContentDescription(tab.getContentDescription());
        }
      }
    }