summaryrefslogtreecommitdiffstats
path: root/core/java/com/android/internal/widget/ScrollingTabContainerView.java
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2012-08-24 17:56:41 -0700
committerAdam Powell <adamp@google.com>2012-08-24 18:00:40 -0700
commitc7752a312adfe108c3b0e9143122152f2470be31 (patch)
treec7e94c2c698fb22927542b489f923a5d0eb85d5a /core/java/com/android/internal/widget/ScrollingTabContainerView.java
parent3a5c376e29a4acc5030c7749c43b8aac55736778 (diff)
downloadframeworks_base-c7752a312adfe108c3b0e9143122152f2470be31.zip
frameworks_base-c7752a312adfe108c3b0e9143122152f2470be31.tar.gz
frameworks_base-c7752a312adfe108c3b0e9143122152f2470be31.tar.bz2
Show content description popups when long-pressing action bar tabs
If an action bar tab shows as an icon only and has a content description, show a long-press popup with the content description. Bug 6009390 Change-Id: I7f2f68eeef03ede99ff2113e21e1dc14a4295827
Diffstat (limited to 'core/java/com/android/internal/widget/ScrollingTabContainerView.java')
-rw-r--r--core/java/com/android/internal/widget/ScrollingTabContainerView.java34
1 files changed, 32 insertions, 2 deletions
diff --git a/core/java/com/android/internal/widget/ScrollingTabContainerView.java b/core/java/com/android/internal/widget/ScrollingTabContainerView.java
index 08d9f49..b620568 100644
--- a/core/java/com/android/internal/widget/ScrollingTabContainerView.java
+++ b/core/java/com/android/internal/widget/ScrollingTabContainerView.java
@@ -23,7 +23,9 @@ import android.animation.TimeInterpolator;
import android.app.ActionBar;
import android.content.Context;
import android.content.res.Configuration;
+import android.graphics.Rect;
import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
import android.text.TextUtils.TruncateAt;
import android.view.Gravity;
import android.view.View;
@@ -38,6 +40,7 @@ import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.TextView;
+import android.widget.Toast;
/**
* This widget implements the dynamic action bar tab behavior that can change
@@ -352,7 +355,7 @@ public class ScrollingTabContainerView extends HorizontalScrollView
tabView.getTab().select();
}
- private class TabView extends LinearLayout {
+ private class TabView extends LinearLayout implements OnLongClickListener {
private ActionBar.Tab mTab;
private TextView mTextView;
private ImageView mIconView;
@@ -426,7 +429,8 @@ public class ScrollingTabContainerView extends HorizontalScrollView
mIconView.setImageDrawable(null);
}
- if (text != null) {
+ final boolean hasText = !TextUtils.isEmpty(text);
+ if (hasText) {
if (mTextView == null) {
TextView textView = new TextView(getContext(), null,
com.android.internal.R.attr.actionBarTabTextStyle);
@@ -448,9 +452,35 @@ public class ScrollingTabContainerView extends HorizontalScrollView
if (mIconView != null) {
mIconView.setContentDescription(tab.getContentDescription());
}
+
+ if (!hasText && !TextUtils.isEmpty(tab.getContentDescription())) {
+ setOnLongClickListener(this);
+ } else {
+ setOnLongClickListener(null);
+ setLongClickable(false);
+ }
}
}
+ public boolean onLongClick(View v) {
+ final int[] screenPos = new int[2];
+ getLocationOnScreen(screenPos);
+
+ final Context context = getContext();
+ final int width = getWidth();
+ final int height = getHeight();
+ final int screenWidth = context.getResources().getDisplayMetrics().widthPixels;
+
+ Toast cheatSheet = Toast.makeText(context, mTab.getContentDescription(),
+ Toast.LENGTH_SHORT);
+ // Show under the tab
+ cheatSheet.setGravity(Gravity.TOP | Gravity.CENTER_HORIZONTAL,
+ (screenPos[0] + width / 2) - screenWidth / 2, height);
+
+ cheatSheet.show();
+ return true;
+ }
+
public ActionBar.Tab getTab() {
return mTab;
}