Loading core/java/com/android/internal/view/menu/ActionMenuItemView.java +28 −35 Original line number Diff line number Diff line Loading @@ -27,28 +27,26 @@ import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.accessibility.AccessibilityEvent; import android.widget.Button; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; /** * @hide */ public class ActionMenuItemView extends LinearLayout public class ActionMenuItemView extends TextView implements MenuView.ItemView, View.OnClickListener, View.OnLongClickListener, ActionMenuView.ActionMenuChildView { private static final String TAG = "ActionMenuItemView"; private MenuItemImpl mItemData; private CharSequence mTitle; private Drawable mIcon; private MenuBuilder.ItemInvoker mItemInvoker; private ImageButton mImageButton; private Button mTextButton; private boolean mAllowTextWithIcon; private boolean mExpandedFormat; private int mMinWidth; private int mSavedPaddingLeft; public ActionMenuItemView(Context context) { this(context, null); Loading @@ -68,17 +66,12 @@ public class ActionMenuItemView extends LinearLayout mMinWidth = a.getDimensionPixelSize( com.android.internal.R.styleable.ActionMenuItemView_minWidth, 0); a.recycle(); } @Override public void onFinishInflate() { mImageButton = (ImageButton) findViewById(com.android.internal.R.id.imageButton); mTextButton = (Button) findViewById(com.android.internal.R.id.textButton); mImageButton.setOnClickListener(this); mTextButton.setOnClickListener(this); mImageButton.setOnLongClickListener(this); setOnClickListener(this); setOnLongClickListener(this); // Save the inflated padding for later, we'll need it. mSavedPaddingLeft = getPaddingLeft(); } public MenuItemImpl getItemData() { Loading @@ -96,13 +89,6 @@ public class ActionMenuItemView extends LinearLayout setEnabled(itemData.isEnabled()); } @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); mImageButton.setEnabled(enabled); mTextButton.setEnabled(enabled); } public void onClick(View v) { if (mItemInvoker != null) { mItemInvoker.invokeItem(mItemData); Loading Loading @@ -135,26 +121,22 @@ public class ActionMenuItemView extends LinearLayout } private void updateTextButtonVisibility() { boolean visible = !TextUtils.isEmpty(mTextButton.getText()); visible &= mImageButton.getDrawable() == null || boolean visible = !TextUtils.isEmpty(mTitle); visible &= mIcon == null || (mItemData.showsTextAsAction() && (mAllowTextWithIcon || mExpandedFormat)); mTextButton.setVisibility(visible ? VISIBLE : GONE); setText(visible ? mTitle : null); } public void setIcon(Drawable icon) { mImageButton.setImageDrawable(icon); if (icon != null) { mImageButton.setVisibility(VISIBLE); } else { mImageButton.setVisibility(GONE); } mIcon = icon; setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null); updateTextButtonVisibility(); } public boolean hasText() { return mTextButton.getVisibility() != GONE; return !TextUtils.isEmpty(getText()); } public void setShortcut(boolean showShortcut, char shortcutKey) { Loading @@ -164,8 +146,6 @@ public class ActionMenuItemView extends LinearLayout public void setTitle(CharSequence title) { mTitle = title; mTextButton.setText(mTitle); setContentDescription(mTitle); updateTextButtonVisibility(); } Loading Loading @@ -236,12 +216,17 @@ public class ActionMenuItemView extends LinearLayout @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final boolean textVisible = hasText(); if (textVisible) { setPadding(mSavedPaddingLeft, getPaddingTop(), getPaddingRight(), getPaddingBottom()); } super.onMeasure(widthMeasureSpec, heightMeasureSpec); final int widthMode = MeasureSpec.getMode(widthMeasureSpec); final int specSize = MeasureSpec.getSize(widthMeasureSpec); final int widthSize = MeasureSpec.getSize(widthMeasureSpec); final int oldMeasuredWidth = getMeasuredWidth(); final int targetWidth = widthMode == MeasureSpec.AT_MOST ? Math.min(specSize, mMinWidth) final int targetWidth = widthMode == MeasureSpec.AT_MOST ? Math.min(widthSize, mMinWidth) : mMinWidth; if (widthMode != MeasureSpec.EXACTLY && mMinWidth > 0 && oldMeasuredWidth < targetWidth) { Loading @@ -249,5 +234,13 @@ public class ActionMenuItemView extends LinearLayout super.onMeasure(MeasureSpec.makeMeasureSpec(targetWidth, MeasureSpec.EXACTLY), heightMeasureSpec); } if (!textVisible && mIcon != null) { // TextView won't center compound drawables in both dimensions without // a little coercion. Pad in to center the icon after we've measured. final int w = getMeasuredWidth(); final int dw = mIcon.getIntrinsicWidth(); setPadding((w - dw) / 2, getPaddingTop(), getPaddingRight(), getPaddingBottom()); } } } core/java/com/android/internal/view/menu/ActionMenuView.java +7 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,13 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo if (mFormatItems) { onMeasureExactFormat(widthMeasureSpec, heightMeasureSpec); } else { // Previous measurement at exact format may have set margins - reset them. final int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { final View child = getChildAt(i); final LayoutParams lp = (LayoutParams) child.getLayoutParams(); lp.leftMargin = lp.rightMargin = 0; } super.onMeasure(widthMeasureSpec, heightMeasureSpec); } } Loading core/res/res/layout/action_menu_item_layout.xml +7 −34 Original line number Diff line number Diff line Loading @@ -18,39 +18,12 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:addStatesFromChildren="true" android:gravity="center" android:focusable="true" android:paddingLeft="4dip" android:paddingRight="4dip" style="?android:attr/actionButtonStyle"> <ImageButton android:id="@+id/imageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:visibility="gone" android:layout_marginTop="4dip" android:layout_marginBottom="4dip" android:layout_marginLeft="4dip" android:layout_marginRight="4dip" android:scaleType="fitCenter" android:adjustViewBounds="true" android:background="@null" android:focusable="false" /> <Button android:id="@+id/textButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:visibility="gone" android:textAppearance="?attr/actionMenuTextAppearance" style="?attr/buttonStyleSmall" android:textColor="?attr/actionMenuTextColor" android:singleLine="true" android:ellipsize="none" android:background="@null" android:paddingTop="4dip" android:paddingBottom="4dip" android:paddingLeft="4dip" android:paddingRight="4dip" android:focusable="false" /> </com.android.internal.view.menu.ActionMenuItemView> android:paddingLeft="8dip" android:paddingRight="8dip" android:textAppearance="?attr/actionMenuTextAppearance" android:textColor="?attr/actionMenuTextColor" style="?android:attr/actionButtonStyle" /> core/res/res/values/public.xml +0 −2 Original line number Diff line number Diff line Loading @@ -88,7 +88,6 @@ <java-symbol type="id" name="hour" /> <java-symbol type="id" name="icon" /> <java-symbol type="id" name="image" /> <java-symbol type="id" name="imageButton" /> <java-symbol type="id" name="increment" /> <java-symbol type="id" name="internalEmpty" /> <java-symbol type="id" name="info" /> Loading Loading @@ -173,7 +172,6 @@ <java-symbol type="id" name="switch_old" /> <java-symbol type="id" name="switchWidget" /> <java-symbol type="id" name="text" /> <java-symbol type="id" name="textButton" /> <java-symbol type="id" name="time" /> <java-symbol type="id" name="time_current" /> <java-symbol type="id" name="timeDisplayBackground" /> Loading Loading
core/java/com/android/internal/view/menu/ActionMenuItemView.java +28 −35 Original line number Diff line number Diff line Loading @@ -27,28 +27,26 @@ import android.view.Gravity; import android.view.MotionEvent; import android.view.View; import android.view.accessibility.AccessibilityEvent; import android.widget.Button; import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; /** * @hide */ public class ActionMenuItemView extends LinearLayout public class ActionMenuItemView extends TextView implements MenuView.ItemView, View.OnClickListener, View.OnLongClickListener, ActionMenuView.ActionMenuChildView { private static final String TAG = "ActionMenuItemView"; private MenuItemImpl mItemData; private CharSequence mTitle; private Drawable mIcon; private MenuBuilder.ItemInvoker mItemInvoker; private ImageButton mImageButton; private Button mTextButton; private boolean mAllowTextWithIcon; private boolean mExpandedFormat; private int mMinWidth; private int mSavedPaddingLeft; public ActionMenuItemView(Context context) { this(context, null); Loading @@ -68,17 +66,12 @@ public class ActionMenuItemView extends LinearLayout mMinWidth = a.getDimensionPixelSize( com.android.internal.R.styleable.ActionMenuItemView_minWidth, 0); a.recycle(); } @Override public void onFinishInflate() { mImageButton = (ImageButton) findViewById(com.android.internal.R.id.imageButton); mTextButton = (Button) findViewById(com.android.internal.R.id.textButton); mImageButton.setOnClickListener(this); mTextButton.setOnClickListener(this); mImageButton.setOnLongClickListener(this); setOnClickListener(this); setOnLongClickListener(this); // Save the inflated padding for later, we'll need it. mSavedPaddingLeft = getPaddingLeft(); } public MenuItemImpl getItemData() { Loading @@ -96,13 +89,6 @@ public class ActionMenuItemView extends LinearLayout setEnabled(itemData.isEnabled()); } @Override public void setEnabled(boolean enabled) { super.setEnabled(enabled); mImageButton.setEnabled(enabled); mTextButton.setEnabled(enabled); } public void onClick(View v) { if (mItemInvoker != null) { mItemInvoker.invokeItem(mItemData); Loading Loading @@ -135,26 +121,22 @@ public class ActionMenuItemView extends LinearLayout } private void updateTextButtonVisibility() { boolean visible = !TextUtils.isEmpty(mTextButton.getText()); visible &= mImageButton.getDrawable() == null || boolean visible = !TextUtils.isEmpty(mTitle); visible &= mIcon == null || (mItemData.showsTextAsAction() && (mAllowTextWithIcon || mExpandedFormat)); mTextButton.setVisibility(visible ? VISIBLE : GONE); setText(visible ? mTitle : null); } public void setIcon(Drawable icon) { mImageButton.setImageDrawable(icon); if (icon != null) { mImageButton.setVisibility(VISIBLE); } else { mImageButton.setVisibility(GONE); } mIcon = icon; setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null); updateTextButtonVisibility(); } public boolean hasText() { return mTextButton.getVisibility() != GONE; return !TextUtils.isEmpty(getText()); } public void setShortcut(boolean showShortcut, char shortcutKey) { Loading @@ -164,8 +146,6 @@ public class ActionMenuItemView extends LinearLayout public void setTitle(CharSequence title) { mTitle = title; mTextButton.setText(mTitle); setContentDescription(mTitle); updateTextButtonVisibility(); } Loading Loading @@ -236,12 +216,17 @@ public class ActionMenuItemView extends LinearLayout @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { final boolean textVisible = hasText(); if (textVisible) { setPadding(mSavedPaddingLeft, getPaddingTop(), getPaddingRight(), getPaddingBottom()); } super.onMeasure(widthMeasureSpec, heightMeasureSpec); final int widthMode = MeasureSpec.getMode(widthMeasureSpec); final int specSize = MeasureSpec.getSize(widthMeasureSpec); final int widthSize = MeasureSpec.getSize(widthMeasureSpec); final int oldMeasuredWidth = getMeasuredWidth(); final int targetWidth = widthMode == MeasureSpec.AT_MOST ? Math.min(specSize, mMinWidth) final int targetWidth = widthMode == MeasureSpec.AT_MOST ? Math.min(widthSize, mMinWidth) : mMinWidth; if (widthMode != MeasureSpec.EXACTLY && mMinWidth > 0 && oldMeasuredWidth < targetWidth) { Loading @@ -249,5 +234,13 @@ public class ActionMenuItemView extends LinearLayout super.onMeasure(MeasureSpec.makeMeasureSpec(targetWidth, MeasureSpec.EXACTLY), heightMeasureSpec); } if (!textVisible && mIcon != null) { // TextView won't center compound drawables in both dimensions without // a little coercion. Pad in to center the icon after we've measured. final int w = getMeasuredWidth(); final int dw = mIcon.getIntrinsicWidth(); setPadding((w - dw) / 2, getPaddingTop(), getPaddingRight(), getPaddingBottom()); } } }
core/java/com/android/internal/view/menu/ActionMenuView.java +7 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,13 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo if (mFormatItems) { onMeasureExactFormat(widthMeasureSpec, heightMeasureSpec); } else { // Previous measurement at exact format may have set margins - reset them. final int childCount = getChildCount(); for (int i = 0; i < childCount; i++) { final View child = getChildAt(i); final LayoutParams lp = (LayoutParams) child.getLayoutParams(); lp.leftMargin = lp.rightMargin = 0; } super.onMeasure(widthMeasureSpec, heightMeasureSpec); } } Loading
core/res/res/layout/action_menu_item_layout.xml +7 −34 Original line number Diff line number Diff line Loading @@ -18,39 +18,12 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:addStatesFromChildren="true" android:gravity="center" android:focusable="true" android:paddingLeft="4dip" android:paddingRight="4dip" style="?android:attr/actionButtonStyle"> <ImageButton android:id="@+id/imageButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:visibility="gone" android:layout_marginTop="4dip" android:layout_marginBottom="4dip" android:layout_marginLeft="4dip" android:layout_marginRight="4dip" android:scaleType="fitCenter" android:adjustViewBounds="true" android:background="@null" android:focusable="false" /> <Button android:id="@+id/textButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:visibility="gone" android:textAppearance="?attr/actionMenuTextAppearance" style="?attr/buttonStyleSmall" android:textColor="?attr/actionMenuTextColor" android:singleLine="true" android:ellipsize="none" android:background="@null" android:paddingTop="4dip" android:paddingBottom="4dip" android:paddingLeft="4dip" android:paddingRight="4dip" android:focusable="false" /> </com.android.internal.view.menu.ActionMenuItemView> android:paddingLeft="8dip" android:paddingRight="8dip" android:textAppearance="?attr/actionMenuTextAppearance" android:textColor="?attr/actionMenuTextColor" style="?android:attr/actionButtonStyle" />
core/res/res/values/public.xml +0 −2 Original line number Diff line number Diff line Loading @@ -88,7 +88,6 @@ <java-symbol type="id" name="hour" /> <java-symbol type="id" name="icon" /> <java-symbol type="id" name="image" /> <java-symbol type="id" name="imageButton" /> <java-symbol type="id" name="increment" /> <java-symbol type="id" name="internalEmpty" /> <java-symbol type="id" name="info" /> Loading Loading @@ -173,7 +172,6 @@ <java-symbol type="id" name="switch_old" /> <java-symbol type="id" name="switchWidget" /> <java-symbol type="id" name="text" /> <java-symbol type="id" name="textButton" /> <java-symbol type="id" name="time" /> <java-symbol type="id" name="time_current" /> <java-symbol type="id" name="timeDisplayBackground" /> Loading