Make ListView's FastScroller aware of layout direction

- see bug #5429822 UI should be mirrored for RTL locales (Arabic, Hebrew, farsi)

Change-Id: Ia70836041150b5e305df1af57a68bcdb4969f78c
This commit is contained in:
Fabrice Di Meglio
2012-06-22 18:46:06 -07:00
parent 3a4832aa64
commit c23ee46c8f

View File

@@ -181,10 +181,13 @@ class FastScroller {
}
public void setScrollbarPosition(int position) {
if (position == View.SCROLLBAR_POSITION_DEFAULT) {
position = mList.isLayoutRtl() ?
View.SCROLLBAR_POSITION_LEFT : View.SCROLLBAR_POSITION_RIGHT;
}
mPosition = position;
switch (position) {
default:
case View.SCROLLBAR_POSITION_DEFAULT:
case View.SCROLLBAR_POSITION_RIGHT:
mOverlayDrawable = mOverlayDrawableRight;
break;
@@ -229,7 +232,6 @@ class FastScroller {
final int viewWidth = mList.getWidth();
// Bounds are always top right. Y coordinate get's translated during draw
switch (mPosition) {
case View.SCROLLBAR_POSITION_DEFAULT:
case View.SCROLLBAR_POSITION_RIGHT:
mThumbDrawable.setBounds(viewWidth - mThumbW, 0, viewWidth, mThumbH);
break;
@@ -327,7 +329,6 @@ class FastScroller {
}
int left = 0;
switch (mPosition) {
case View.SCROLLBAR_POSITION_DEFAULT:
case View.SCROLLBAR_POSITION_RIGHT:
left = viewWidth - (mThumbW * alpha) / ScrollFade.ALPHA_MAX;
break;
@@ -360,7 +361,6 @@ class FastScroller {
int left = 0;
switch (mPosition) {
default:
case View.SCROLLBAR_POSITION_DEFAULT:
case View.SCROLLBAR_POSITION_RIGHT:
left = Math.max(0,
mThumbDrawable.getBounds().left - mThumbW - mOverlaySize);
@@ -410,7 +410,6 @@ class FastScroller {
if (mThumbDrawable != null) {
switch (mPosition) {
default:
case View.SCROLLBAR_POSITION_DEFAULT:
case View.SCROLLBAR_POSITION_RIGHT:
mThumbDrawable.setBounds(w - mThumbW, 0, w, mThumbH);
break;
@@ -820,7 +819,6 @@ class FastScroller {
boolean inTrack = false;
switch (mPosition) {
default:
case View.SCROLLBAR_POSITION_DEFAULT:
case View.SCROLLBAR_POSITION_RIGHT:
inTrack = x > mList.getWidth() - mThumbW;
break;