* commit 'cb3b67f404c97c799233f04c91726e2febc66f5e': Properly restore RTL state in HorizontalScrollView
This commit is contained in:
@@ -1505,11 +1505,9 @@ public class HorizontalScrollView extends FrameLayout {
|
||||
final int scrollRange = Math.max(0,
|
||||
childWidth - (r - l - mPaddingLeft - mPaddingRight));
|
||||
if (mSavedState != null) {
|
||||
if (isLayoutRtl() == mSavedState.isLayoutRtl) {
|
||||
mScrollX = mSavedState.scrollPosition;
|
||||
} else {
|
||||
mScrollX = scrollRange - mSavedState.scrollPosition;
|
||||
}
|
||||
mScrollX = isLayoutRtl()
|
||||
? scrollRange - mSavedState.scrollOffsetFromStart
|
||||
: mSavedState.scrollOffsetFromStart;
|
||||
mSavedState = null;
|
||||
} else {
|
||||
if (isLayoutRtl()) {
|
||||
@@ -1692,8 +1690,7 @@ public class HorizontalScrollView extends FrameLayout {
|
||||
}
|
||||
Parcelable superState = super.onSaveInstanceState();
|
||||
SavedState ss = new SavedState(superState);
|
||||
ss.scrollPosition = mScrollX;
|
||||
ss.isLayoutRtl = isLayoutRtl();
|
||||
ss.scrollOffsetFromStart = isLayoutRtl() ? -mScrollX : mScrollX;
|
||||
return ss;
|
||||
}
|
||||
|
||||
@@ -1705,8 +1702,7 @@ public class HorizontalScrollView extends FrameLayout {
|
||||
}
|
||||
|
||||
static class SavedState extends BaseSavedState {
|
||||
public int scrollPosition;
|
||||
public boolean isLayoutRtl;
|
||||
public int scrollOffsetFromStart;
|
||||
|
||||
SavedState(Parcelable superState) {
|
||||
super(superState);
|
||||
@@ -1714,23 +1710,21 @@ public class HorizontalScrollView extends FrameLayout {
|
||||
|
||||
public SavedState(Parcel source) {
|
||||
super(source);
|
||||
scrollPosition = source.readInt();
|
||||
isLayoutRtl = (source.readInt() == 0) ? true : false;
|
||||
scrollOffsetFromStart = source.readInt();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void writeToParcel(Parcel dest, int flags) {
|
||||
super.writeToParcel(dest, flags);
|
||||
dest.writeInt(scrollPosition);
|
||||
dest.writeInt(isLayoutRtl ? 1 : 0);
|
||||
dest.writeInt(scrollOffsetFromStart);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "HorizontalScrollView.SavedState{"
|
||||
+ Integer.toHexString(System.identityHashCode(this))
|
||||
+ " scrollPosition=" + scrollPosition
|
||||
+ " isLayoutRtl=" + isLayoutRtl + "}";
|
||||
+ " scrollPosition=" + scrollOffsetFromStart
|
||||
+ "}";
|
||||
}
|
||||
|
||||
public static final Parcelable.Creator<SavedState> CREATOR
|
||||
|
||||
Reference in New Issue
Block a user