aboutsummaryrefslogtreecommitdiffstats
path: root/java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2013-05-01 13:13:21 +0900
committerTadashi G. Takaoka <takaoka@google.com>2013-05-01 14:02:18 +0900
commit47a66b12ec49179a09642bf48a0d2bd49d9f3458 (patch)
treebee2508043a1dbf019bec2e949cbfd5561a22439 /java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java
parent7b2114a4283ccd90a937b14145c11125824cd1bd (diff)
downloadlatinime-47a66b12ec49179a09642bf48a0d2bd49d9f3458.tar.gz
latinime-47a66b12ec49179a09642bf48a0d2bd49d9f3458.tar.xz
latinime-47a66b12ec49179a09642bf48a0d2bd49d9f3458.zip
Override View.drawableStateChanged to detect state_pressed
Unlike on JB, View.setPressed(boolean) is never called when the view is pressed on ICS. To detect a pressed state of the view, we need to override View.drawableStateChanged() and check the drawable state contains state_pressed. Bug: 8159728 Change-Id: I481051364d6f3d1370742723c3ce19d898ea5463
Diffstat (limited to 'java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java')
-rw-r--r--java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java31
1 files changed, 23 insertions, 8 deletions
diff --git a/java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java b/java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java
index ca974f6b8..974dfddd3 100644
--- a/java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java
+++ b/java/src/com/android/inputmethod/latin/setup/SetupStartIndicatorView.java
@@ -51,11 +51,32 @@ public final class SetupStartIndicatorView extends LinearLayout {
mIndicatorView = indicatorView;
}
+ // TODO: Once we stop supporting ICS, uncomment {@link #setPressed(boolean)} method and
+ // remove this method.
@Override
- public void setPressed(final boolean pressed) {
- super.setPressed(pressed);
+ protected void drawableStateChanged() {
+ super.drawableStateChanged();
+ for (final int state : getDrawableState()) {
+ if (state == android.R.attr.state_pressed) {
+ updateIndicatorView(true /* pressed */);
+ return;
+ }
+ }
+ updateIndicatorView(false /* pressed */);
+ }
+
+ // TODO: Once we stop supporting ICS, uncomment this method and remove
+ // {@link #drawableStateChanged()} method.
+// @Override
+// public void setPressed(final boolean pressed) {
+// super.setPressed(pressed);
+// updateIndicatorView(pressed);
+// }
+
+ private void updateIndicatorView(final boolean pressed) {
if (mIndicatorView != null) {
mIndicatorView.setPressed(pressed);
+ mIndicatorView.invalidate();
}
}
}
@@ -73,12 +94,6 @@ public final class SetupStartIndicatorView extends LinearLayout {
}
@Override
- public void setPressed(final boolean pressed) {
- super.setPressed(pressed);
- invalidate();
- }
-
- @Override
protected void onDraw(final Canvas canvas) {
super.onDraw(canvas);
final int layoutDirection = ViewCompatUtils.getLayoutDirection(this);