OSDN Git Service

Start saving iconified state of SearchView.
authorAurimas Liutikas <aurimas@google.com>
Thu, 11 Feb 2016 18:10:10 +0000 (10:10 -0800)
committerAurimas Liutikas <aurimas@google.com>
Thu, 11 Feb 2016 18:13:11 +0000 (18:13 +0000)
Bug: 27113484
Change-Id: Ifbde47c9af7c5460390e278a5af674f0c8654c2a

core/java/android/widget/SearchView.java

index 45fc6c3..3796df7 100644 (file)
@@ -36,6 +36,8 @@ import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Parcel;
+import android.os.Parcelable;
 import android.speech.RecognizerIntent;
 import android.text.Editable;
 import android.text.InputType;
@@ -1332,6 +1334,48 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
         setIconified(false);
     }
 
+    static class SavedState extends BaseSavedState {
+        boolean isIconified;
+
+        SavedState(Parcelable superState) {
+            super(superState);
+        }
+
+        public SavedState(Parcel source) {
+            super(source);
+            isIconified = (Boolean) source.readValue(null);
+        }
+
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {
+            super.writeToParcel(dest, flags);
+            dest.writeValue(isIconified);
+        }
+
+        @Override
+        public String toString() {
+            return "SearchView.SavedState{"
+                    + Integer.toHexString(System.identityHashCode(this))
+                    + " isIconified=" + isIconified + "}";
+        }
+    }
+
+    @Override
+    protected Parcelable onSaveInstanceState() {
+        Parcelable superState = super.onSaveInstanceState();
+        SavedState ss = new SavedState(superState);
+        ss.isIconified = isIconified();
+        return ss;
+    }
+
+    @Override
+    protected void onRestoreInstanceState(Parcelable state) {
+        SavedState ss = (SavedState) state;
+        super.onRestoreInstanceState(ss.getSuperState());
+        updateViewsVisibility(ss.isIconified);
+        requestLayout();
+    }
+
     @Override
     public CharSequence getAccessibilityClassName() {
         return SearchView.class.getName();