IconMergerpublic class IconMerger extends android.widget.LinearLayout
Fields Summary |
---|
private static final String | TAG | private static final boolean | DEBUG | private int | mIconSize | private android.view.View | mMoreView |
Constructors Summary |
---|
public IconMerger(android.content.Context context, android.util.AttributeSet attrs)
super(context, attrs);
mIconSize = context.getResources().getDimensionPixelSize(
R.dimen.status_bar_icon_size);
if (DEBUG) {
setBackgroundColor(0x800099FF);
}
|
Methods Summary |
---|
private void | checkOverflow(int width)
if (mMoreView == null) return;
final int N = getChildCount();
int visibleChildren = 0;
for (int i=0; i<N; i++) {
if (getChildAt(i).getVisibility() != GONE) visibleChildren++;
}
final boolean overflowShown = (mMoreView.getVisibility() == View.VISIBLE);
// let's assume we have one more slot if the more icon is already showing
if (overflowShown) visibleChildren --;
final boolean moreRequired = visibleChildren * mIconSize > width;
if (moreRequired != overflowShown) {
post(new Runnable() {
@Override
public void run() {
mMoreView.setVisibility(moreRequired ? View.VISIBLE : View.GONE);
}
});
}
| protected void | onLayout(boolean changed, int l, int t, int r, int b)
super.onLayout(changed, l, t, r, b);
checkOverflow(r - l);
| protected void | onMeasure(int widthMeasureSpec, int heightMeasureSpec)
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
// we need to constrain this to an integral multiple of our children
int width = getMeasuredWidth();
setMeasuredDimension(width - (width % mIconSize), getMeasuredHeight());
| public void | setOverflowIndicator(android.view.View v)
mMoreView = v;
|
|