Methods Summary |
---|
protected void | drawableStateChanged()
super.drawableStateChanged();
if (mBackground != null && mBackground.isStateful()) {
mBackground.setState(getDrawableState());
}
if (mStackedBackground != null && mStackedBackground.isStateful()) {
mStackedBackground.setState(getDrawableState());
}
if (mSplitBackground != null && mSplitBackground.isStateful()) {
mSplitBackground.setState(getDrawableState());
}
|
private int | getMeasuredHeightWithMargins(android.view.View view)
final LayoutParams lp = (LayoutParams) view.getLayoutParams();
return view.getMeasuredHeight() + lp.topMargin + lp.bottomMargin;
|
public android.view.View | getTabContainer()
return mTabContainer;
|
private static boolean | isCollapsed(android.view.View view)
return view == null || view.getVisibility() == GONE || view.getMeasuredHeight() == 0;
|
public void | jumpDrawablesToCurrentState()
super.jumpDrawablesToCurrentState();
if (mBackground != null) {
mBackground.jumpToCurrentState();
}
if (mStackedBackground != null) {
mStackedBackground.jumpToCurrentState();
}
if (mSplitBackground != null) {
mSplitBackground.jumpToCurrentState();
}
|
public void | onFinishInflate()
super.onFinishInflate();
mActionBarView = findViewById(com.android.internal.R.id.action_bar);
mActionContextView = findViewById(com.android.internal.R.id.action_context_bar);
|
public boolean | onHoverEvent(android.view.MotionEvent ev)
super.onHoverEvent(ev);
// An action bar always eats hover events.
return true;
|
public boolean | onInterceptTouchEvent(android.view.MotionEvent ev)
return mIsTransitioning || super.onInterceptTouchEvent(ev);
|
public void | onLayout(boolean changed, int l, int t, int r, int b)
super.onLayout(changed, l, t, r, b);
final View tabContainer = mTabContainer;
final boolean hasTabs = tabContainer != null && tabContainer.getVisibility() != GONE;
if (tabContainer != null && tabContainer.getVisibility() != GONE) {
final int containerHeight = getMeasuredHeight();
final LayoutParams lp = (LayoutParams) tabContainer.getLayoutParams();
final int tabHeight = tabContainer.getMeasuredHeight();
tabContainer.layout(l, containerHeight - tabHeight - lp.bottomMargin, r,
containerHeight - lp.bottomMargin);
}
boolean needsInvalidate = false;
if (mIsSplit) {
if (mSplitBackground != null) {
mSplitBackground.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight());
needsInvalidate = true;
}
} else {
if (mBackground != null) {
if (mActionBarView.getVisibility() == View.VISIBLE) {
mBackground.setBounds(mActionBarView.getLeft(), mActionBarView.getTop(),
mActionBarView.getRight(), mActionBarView.getBottom());
} else if (mActionContextView != null &&
mActionContextView.getVisibility() == View.VISIBLE) {
mBackground.setBounds(mActionContextView.getLeft(), mActionContextView.getTop(),
mActionContextView.getRight(), mActionContextView.getBottom());
} else {
mBackground.setBounds(0, 0, 0, 0);
}
needsInvalidate = true;
}
mIsStacked = hasTabs;
if (hasTabs && mStackedBackground != null) {
mStackedBackground.setBounds(tabContainer.getLeft(), tabContainer.getTop(),
tabContainer.getRight(), tabContainer.getBottom());
needsInvalidate = true;
}
}
if (needsInvalidate) {
invalidate();
}
|
public void | onMeasure(int widthMeasureSpec, int heightMeasureSpec)
if (mActionBarView == null &&
MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.AT_MOST && mHeight >= 0) {
heightMeasureSpec = MeasureSpec.makeMeasureSpec(
Math.min(mHeight, MeasureSpec.getSize(heightMeasureSpec)), MeasureSpec.AT_MOST);
}
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
if (mActionBarView == null) return;
if (mTabContainer != null && mTabContainer.getVisibility() != GONE) {
int nonTabMaxHeight = 0;
final int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
final View child = getChildAt(i);
if (child == mTabContainer) {
continue;
}
nonTabMaxHeight = Math.max(nonTabMaxHeight, isCollapsed(child) ? 0 :
getMeasuredHeightWithMargins(child));
}
final int mode = MeasureSpec.getMode(heightMeasureSpec);
final int maxHeight = mode == MeasureSpec.AT_MOST ?
MeasureSpec.getSize(heightMeasureSpec) : Integer.MAX_VALUE;
setMeasuredDimension(getMeasuredWidth(),
Math.min(nonTabMaxHeight + getMeasuredHeightWithMargins(mTabContainer),
maxHeight));
}
|
public void | onResolveDrawables(int layoutDirection)
super.onResolveDrawables(layoutDirection);
if (mBackground != null) {
mBackground.setLayoutDirection(layoutDirection);
}
if (mStackedBackground != null) {
mStackedBackground.setLayoutDirection(layoutDirection);
}
if (mSplitBackground != null) {
mSplitBackground.setLayoutDirection(layoutDirection);
}
|
public boolean | onTouchEvent(android.view.MotionEvent ev)
super.onTouchEvent(ev);
// An action bar always eats touch events.
return true;
|
public void | setPrimaryBackground(android.graphics.drawable.Drawable bg)
if (mBackground != null) {
mBackground.setCallback(null);
unscheduleDrawable(mBackground);
}
mBackground = bg;
if (bg != null) {
bg.setCallback(this);
if (mActionBarView != null) {
mBackground.setBounds(mActionBarView.getLeft(), mActionBarView.getTop(),
mActionBarView.getRight(), mActionBarView.getBottom());
}
}
setWillNotDraw(mIsSplit ? mSplitBackground == null :
mBackground == null && mStackedBackground == null);
invalidate();
|
public void | setSplitBackground(android.graphics.drawable.Drawable bg)
if (mSplitBackground != null) {
mSplitBackground.setCallback(null);
unscheduleDrawable(mSplitBackground);
}
mSplitBackground = bg;
if (bg != null) {
bg.setCallback(this);
if (mIsSplit && mSplitBackground != null) {
mSplitBackground.setBounds(0, 0, getMeasuredWidth(), getMeasuredHeight());
}
}
setWillNotDraw(mIsSplit ? mSplitBackground == null :
mBackground == null && mStackedBackground == null);
invalidate();
|
public void | setStackedBackground(android.graphics.drawable.Drawable bg)
if (mStackedBackground != null) {
mStackedBackground.setCallback(null);
unscheduleDrawable(mStackedBackground);
}
mStackedBackground = bg;
if (bg != null) {
bg.setCallback(this);
if ((mIsStacked && mStackedBackground != null)) {
mStackedBackground.setBounds(mTabContainer.getLeft(), mTabContainer.getTop(),
mTabContainer.getRight(), mTabContainer.getBottom());
}
}
setWillNotDraw(mIsSplit ? mSplitBackground == null :
mBackground == null && mStackedBackground == null);
invalidate();
|
public void | setTabContainer(ScrollingTabContainerView tabView)
if (mTabContainer != null) {
removeView(mTabContainer);
}
mTabContainer = tabView;
if (tabView != null) {
addView(tabView);
final ViewGroup.LayoutParams lp = tabView.getLayoutParams();
lp.width = LayoutParams.MATCH_PARENT;
lp.height = LayoutParams.WRAP_CONTENT;
tabView.setAllowCollapse(false);
}
|
public void | setTransitioning(boolean isTransitioning)Set the action bar into a "transitioning" state. While transitioning
the bar will block focus and touch from all of its descendants. This
prevents the user from interacting with the bar while it is animating
in or out.
mIsTransitioning = isTransitioning;
setDescendantFocusability(isTransitioning ? FOCUS_BLOCK_DESCENDANTS
: FOCUS_AFTER_DESCENDANTS);
|
public void | setVisibility(int visibility)
super.setVisibility(visibility);
final boolean isVisible = visibility == VISIBLE;
if (mBackground != null) mBackground.setVisible(isVisible, false);
if (mStackedBackground != null) mStackedBackground.setVisible(isVisible, false);
if (mSplitBackground != null) mSplitBackground.setVisible(isVisible, false);
|
public android.view.ActionMode | startActionModeForChild(android.view.View child, ActionMode.Callback callback)
// No starting an action mode for an action bar child! (Where would it go?)
return null;
|
protected boolean | verifyDrawable(android.graphics.drawable.Drawable who)
return (who == mBackground && !mIsSplit) || (who == mStackedBackground && mIsStacked) ||
(who == mSplitBackground && mIsSplit) || super.verifyDrawable(who);
|