Merge "Fix bug #6427629 Clean up layout direction APIs" into jb-mr1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
e3f2ac9e52
@ -28704,8 +28704,6 @@ package android.widget {
|
||||
method protected void onTextChanged(java.lang.CharSequence, int, int, int);
|
||||
method public boolean onTextContextMenuItem(int);
|
||||
method public void removeTextChangedListener(android.text.TextWatcher);
|
||||
method protected void resetResolvedDrawables();
|
||||
method protected void resolveDrawables();
|
||||
method public void setAllCaps(boolean);
|
||||
method public final void setAutoLinkMask(int);
|
||||
method public void setCompoundDrawablePadding(int);
|
||||
|
@ -24830,9 +24830,6 @@ package android.view {
|
||||
method public void buildDrawingCache(boolean);
|
||||
method public void buildLayer();
|
||||
method public boolean callOnClick();
|
||||
method public boolean canResolveLayoutDirection();
|
||||
method public boolean canResolveTextAlignment();
|
||||
method public boolean canResolveTextDirection();
|
||||
method public boolean canScrollHorizontally(int);
|
||||
method public boolean canScrollVertically(int);
|
||||
method public void cancelLongPress();
|
||||
@ -25033,7 +25030,6 @@ package android.view {
|
||||
method public boolean isHovered();
|
||||
method public boolean isInEditMode();
|
||||
method public boolean isInTouchMode();
|
||||
method protected static boolean isLayoutDirectionRtl(java.util.Locale);
|
||||
method public boolean isLayoutRequested();
|
||||
method public boolean isLayoutRtl();
|
||||
method public boolean isLongClickable();
|
||||
@ -25089,14 +25085,8 @@ package android.view {
|
||||
method protected void onOverScrolled(int, int, boolean, boolean);
|
||||
method public void onPaddingChanged(int);
|
||||
method public void onPopulateAccessibilityEvent(android.view.accessibility.AccessibilityEvent);
|
||||
method public void onResolveDrawables(int);
|
||||
method public void onResolvedLayoutDirectionChanged();
|
||||
method public void onResolvedLayoutDirectionReset();
|
||||
method public void onResolvedTextAlignmentChanged();
|
||||
method public void onResolvedTextAlignmentReset();
|
||||
method public void onResolvedTextDirectionChanged();
|
||||
method public void onResolvedTextDirectionReset();
|
||||
method protected void onRestoreInstanceState(android.os.Parcelable);
|
||||
method public void onRtlPropertiesChanged();
|
||||
method protected android.os.Parcelable onSaveInstanceState();
|
||||
method public void onScreenStateChanged(int);
|
||||
method protected void onScrollChanged(int, int, int, int);
|
||||
@ -25138,16 +25128,8 @@ package android.view {
|
||||
method public void requestLayout();
|
||||
method public boolean requestRectangleOnScreen(android.graphics.Rect);
|
||||
method public boolean requestRectangleOnScreen(android.graphics.Rect, boolean);
|
||||
method public void resetResolvedLayoutDirection();
|
||||
method public void resetResolvedTextAlignment();
|
||||
method public void resetResolvedTextDirection();
|
||||
method public void resolveDrawables();
|
||||
method public void resolveLayoutDirection();
|
||||
method public void resolvePadding();
|
||||
method public static int resolveSize(int, int);
|
||||
method public static int resolveSizeAndState(int, int, int);
|
||||
method public void resolveTextAlignment();
|
||||
method public void resolveTextDirection();
|
||||
method public void restoreHierarchyState(android.util.SparseArray<android.os.Parcelable>);
|
||||
method public void saveHierarchyState(android.util.SparseArray<android.os.Parcelable>);
|
||||
method public void scheduleDrawable(android.graphics.drawable.Drawable, java.lang.Runnable, long);
|
||||
|
@ -5799,13 +5799,13 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
if (getLayoutDirection() != layoutDirection) {
|
||||
// Reset the current layout direction and the resolved one
|
||||
mPrivateFlags2 &= ~PFLAG2_LAYOUT_DIRECTION_MASK;
|
||||
resetResolvedLayoutDirection();
|
||||
// Reset padding resolution
|
||||
mPrivateFlags2 &= ~PFLAG2_PADDING_RESOLVED;
|
||||
resetRtlProperties();
|
||||
// Set the new layout direction (filtered)
|
||||
mPrivateFlags2 |=
|
||||
((layoutDirection << PFLAG2_LAYOUT_DIRECTION_MASK_SHIFT) & PFLAG2_LAYOUT_DIRECTION_MASK);
|
||||
resolveRtlProperties();
|
||||
// Notify changes
|
||||
onRtlPropertiesChanged();
|
||||
// ... and ask for a layout pass
|
||||
requestLayout();
|
||||
}
|
||||
@ -11475,6 +11475,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
jumpDrawablesToCurrentState();
|
||||
|
||||
resolveRtlProperties();
|
||||
// Notify changes
|
||||
onRtlPropertiesChanged();
|
||||
|
||||
clearAccessibilityFocus();
|
||||
if (isFocused()) {
|
||||
@ -11487,17 +11489,28 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve all RTL related properties
|
||||
*/
|
||||
void resolveRtlProperties() {
|
||||
// Order is important here: LayoutDirection MUST be resolved first...
|
||||
resolveLayoutDirection();
|
||||
// ... then we can resolve the others properties depending on the resolved LayoutDirection.
|
||||
resolvePadding();
|
||||
resolveLayoutParams();
|
||||
resolveTextDirection();
|
||||
resolveTextAlignment();
|
||||
resolvePadding();
|
||||
resolveLayoutParams();
|
||||
resolveDrawables();
|
||||
}
|
||||
|
||||
// Reset resolution of all RTL related properties
|
||||
void resetRtlProperties() {
|
||||
resetResolvedLayoutDirection();
|
||||
resetResolvedTextDirection();
|
||||
resetResolvedTextAlignment();
|
||||
resetResolvedPadding();
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #onScreenStateChanged(int)
|
||||
*/
|
||||
@ -11524,10 +11537,23 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
return mContext.getApplicationInfo().hasRtlSupport();
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when any RTL property (layout direction or text direction or text alignment) has
|
||||
* been changed.
|
||||
*
|
||||
* Subclasses need to override this method to take care of cached information that depends on the
|
||||
* resolved layout direction, or to inform child views that inherit their layout direction.
|
||||
*
|
||||
* The default implementation does nothing.
|
||||
*/
|
||||
public void onRtlPropertiesChanged() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve and cache the layout direction. LTR is set initially. This is implicitly supposing
|
||||
* that the parent directionality can and will be resolved before its children.
|
||||
* Will call {@link View#onResolvedLayoutDirectionChanged} when resolution is done.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void resolveLayoutDirection() {
|
||||
// Clear any previous layout direction resolution
|
||||
@ -11555,7 +11581,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
mPrivateFlags2 |= PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL;
|
||||
break;
|
||||
case LAYOUT_DIRECTION_LOCALE:
|
||||
if(isLayoutDirectionRtl(Locale.getDefault())) {
|
||||
if((LAYOUT_DIRECTION_RTL ==
|
||||
TextUtils.getLayoutDirectionFromLocale(Locale.getDefault()))) {
|
||||
mPrivateFlags2 |= PFLAG2_LAYOUT_DIRECTION_RESOLVED_RTL;
|
||||
}
|
||||
break;
|
||||
@ -11566,19 +11593,38 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
|
||||
// Set to resolved
|
||||
mPrivateFlags2 |= PFLAG2_LAYOUT_DIRECTION_RESOLVED;
|
||||
onResolvedLayoutDirectionChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when layout direction has been resolved.
|
||||
* Check if layout direction resolution can be done.
|
||||
*
|
||||
* The default implementation does nothing.
|
||||
* @return true if layout direction resolution can be done otherwise return false.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void onResolvedLayoutDirectionChanged() {
|
||||
public boolean canResolveLayoutDirection() {
|
||||
switch (getLayoutDirection()) {
|
||||
case LAYOUT_DIRECTION_INHERIT:
|
||||
return (mParent != null) && (mParent instanceof ViewGroup);
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the resolved layout direction.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void resetResolvedLayoutDirection() {
|
||||
// Reset the current resolved bits
|
||||
mPrivateFlags2 &= ~PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return if padding has been resolved
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
boolean isPaddingResolved() {
|
||||
return (mPrivateFlags2 & PFLAG2_PADDING_RESOLVED) != 0;
|
||||
@ -11586,6 +11632,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
|
||||
/**
|
||||
* Resolve padding depending on layout direction.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void resolvePadding() {
|
||||
final int targetSdkVersion = getContext().getApplicationInfo().targetSdkVersion;
|
||||
@ -11648,6 +11696,15 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
mPrivateFlags2 |= PFLAG2_PADDING_RESOLVED;
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the resolved layout direction.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void resetResolvedPadding() {
|
||||
mPrivateFlags2 &= ~PFLAG2_PADDING_RESOLVED;
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve padding depending on the layout direction. Subclasses that care about
|
||||
* padding resolution should override this method. The default implementation does
|
||||
@ -11661,53 +11718,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
public void onPaddingChanged(int layoutDirection) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if layout direction resolution can be done.
|
||||
*
|
||||
* @return true if layout direction resolution can be done otherwise return false.
|
||||
*/
|
||||
public boolean canResolveLayoutDirection() {
|
||||
switch (getLayoutDirection()) {
|
||||
case LAYOUT_DIRECTION_INHERIT:
|
||||
return (mParent != null) && (mParent instanceof ViewGroup);
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset the resolved layout direction. Will call {@link View#onResolvedLayoutDirectionReset}
|
||||
* when reset is done.
|
||||
*/
|
||||
public void resetResolvedLayoutDirection() {
|
||||
// Reset the current resolved bits
|
||||
mPrivateFlags2 &= ~PFLAG2_LAYOUT_DIRECTION_RESOLVED_MASK;
|
||||
onResolvedLayoutDirectionReset();
|
||||
// Reset also the text direction
|
||||
resetResolvedTextDirection();
|
||||
}
|
||||
|
||||
/**
|
||||
* Called during reset of resolved layout direction.
|
||||
*
|
||||
* Subclasses need to override this method to clear cached information that depends on the
|
||||
* resolved layout direction, or to inform child views that inherit their layout direction.
|
||||
*
|
||||
* The default implementation does nothing.
|
||||
*/
|
||||
public void onResolvedLayoutDirectionReset() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a Locale uses an RTL script.
|
||||
*
|
||||
* @param locale Locale to check
|
||||
* @return true if the Locale uses an RTL script.
|
||||
*/
|
||||
protected static boolean isLayoutDirectionRtl(Locale locale) {
|
||||
return (LAYOUT_DIRECTION_RTL == TextUtils.getLayoutDirectionFromLocale(locale));
|
||||
}
|
||||
|
||||
/**
|
||||
* This is called when the view is detached from a window. At this point it
|
||||
* no longer has a surface for drawing.
|
||||
@ -11738,10 +11748,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
|
||||
mCurrentAnimation = null;
|
||||
|
||||
resetResolvedLayoutDirection();
|
||||
resetResolvedTextAlignment();
|
||||
resetRtlProperties();
|
||||
onRtlPropertiesChanged();
|
||||
resetAccessibilityStateChanged();
|
||||
mPrivateFlags2 &= ~PFLAG2_PADDING_RESOLVED;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -14091,6 +14100,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
* that the View directionality can and will be resolved before its Drawables.
|
||||
*
|
||||
* Will call {@link View#onResolveDrawables} when resolution is done.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void resolveDrawables() {
|
||||
if (mBackground != null) {
|
||||
@ -14108,6 +14119,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
*
|
||||
* @see #LAYOUT_DIRECTION_LTR
|
||||
* @see #LAYOUT_DIRECTION_RTL
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void onResolveDrawables(int layoutDirection) {
|
||||
}
|
||||
@ -14383,8 +14396,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
}
|
||||
background.setLayoutDirection(getResolvedLayoutDirection());
|
||||
if (background.getPadding(padding)) {
|
||||
// Reset padding resolution
|
||||
mPrivateFlags2 &= ~PFLAG2_PADDING_RESOLVED;
|
||||
resetResolvedPadding();
|
||||
switch (background.getLayoutDirection()) {
|
||||
case LAYOUT_DIRECTION_RTL:
|
||||
mUserPaddingLeftInitial = padding.right;
|
||||
@ -14485,8 +14497,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
* @param bottom the bottom padding in pixels
|
||||
*/
|
||||
public void setPadding(int left, int top, int right, int bottom) {
|
||||
// Reset padding resolution
|
||||
mPrivateFlags2 &= ~PFLAG2_PADDING_RESOLVED;
|
||||
resetResolvedPadding();
|
||||
|
||||
mUserPaddingStart = UNDEFINED_PADDING;
|
||||
mUserPaddingEnd = UNDEFINED_PADDING;
|
||||
@ -14575,8 +14586,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
* @param bottom the bottom padding in pixels
|
||||
*/
|
||||
public void setPaddingRelative(int start, int top, int end, int bottom) {
|
||||
// Reset padding resolution
|
||||
mPrivateFlags2 &= ~PFLAG2_PADDING_RESOLVED;
|
||||
resetResolvedPadding();
|
||||
|
||||
mUserPaddingStart = start;
|
||||
mUserPaddingEnd = end;
|
||||
@ -16513,6 +16523,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
resetResolvedTextDirection();
|
||||
// Set the new text direction
|
||||
mPrivateFlags2 |= ((textDirection << PFLAG2_TEXT_DIRECTION_MASK_SHIFT) & PFLAG2_TEXT_DIRECTION_MASK);
|
||||
// Notify change
|
||||
onRtlPropertiesChanged();
|
||||
// Refresh
|
||||
requestLayout();
|
||||
invalidate(true);
|
||||
@ -16544,8 +16556,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve the text direction. Will call {@link View#onResolvedTextDirectionChanged} when
|
||||
* resolution is done.
|
||||
* Resolve the text direction.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void resolveTextDirection() {
|
||||
// Reset any previous text direction resolution
|
||||
@ -16598,16 +16611,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
|
||||
// Set to resolved
|
||||
mPrivateFlags2 |= PFLAG2_TEXT_DIRECTION_RESOLVED;
|
||||
onResolvedTextDirectionChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when text direction has been resolved. Subclasses that care about text direction
|
||||
* resolution should override this method.
|
||||
*
|
||||
* The default implementation does nothing.
|
||||
*/
|
||||
public void onResolvedTextDirectionChanged() {
|
||||
}
|
||||
|
||||
/**
|
||||
@ -16615,7 +16618,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
*
|
||||
* @return true if text direction resolution can be done otherwise return false.
|
||||
*/
|
||||
public boolean canResolveTextDirection() {
|
||||
private boolean canResolveTextDirection() {
|
||||
switch (getTextDirection()) {
|
||||
case TEXT_DIRECTION_INHERIT:
|
||||
return (mParent != null) && (mParent instanceof ViewGroup);
|
||||
@ -16626,20 +16629,12 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
|
||||
/**
|
||||
* Reset resolved text direction. Text direction can be resolved with a call to
|
||||
* getResolvedTextDirection(). Will call {@link View#onResolvedTextDirectionReset} when
|
||||
* reset is done.
|
||||
* getResolvedTextDirection().
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void resetResolvedTextDirection() {
|
||||
mPrivateFlags2 &= ~(PFLAG2_TEXT_DIRECTION_RESOLVED | PFLAG2_TEXT_DIRECTION_RESOLVED_MASK);
|
||||
onResolvedTextDirectionReset();
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when text direction is reset. Subclasses that care about text direction reset should
|
||||
* override this method and do a reset of the text direction of their children. The default
|
||||
* implementation does nothing.
|
||||
*/
|
||||
public void onResolvedTextDirectionReset() {
|
||||
}
|
||||
|
||||
/**
|
||||
@ -16691,6 +16686,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
resetResolvedTextAlignment();
|
||||
// Set the new text alignment
|
||||
mPrivateFlags2 |= ((textAlignment << PFLAG2_TEXT_ALIGNMENT_MASK_SHIFT) & PFLAG2_TEXT_ALIGNMENT_MASK);
|
||||
// Notify change
|
||||
onRtlPropertiesChanged();
|
||||
// Refresh
|
||||
requestLayout();
|
||||
invalidate(true);
|
||||
@ -16731,8 +16728,9 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
}
|
||||
|
||||
/**
|
||||
* Resolve the text alignment. Will call {@link View#onResolvedTextAlignmentChanged} when
|
||||
* resolution is done.
|
||||
* Resolve the text alignment.
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public void resolveTextAlignment() {
|
||||
// Reset any previous text alignment resolution
|
||||
@ -16744,7 +16742,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
switch (textAlignment) {
|
||||
case TEXT_ALIGNMENT_INHERIT:
|
||||
// Check if we can resolve the text alignment
|
||||
if (canResolveLayoutDirection() && mParent instanceof View) {
|
||||
if (canResolveTextAlignment() && mParent instanceof View) {
|
||||
View view = (View) mParent;
|
||||
|
||||
final int parentResolvedTextAlignment = view.getResolvedTextAlignment();
|
||||
@ -16790,7 +16788,6 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
|
||||
// Set the resolved
|
||||
mPrivateFlags2 |= PFLAG2_TEXT_ALIGNMENT_RESOLVED;
|
||||
onResolvedTextAlignmentChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
@ -16798,7 +16795,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
*
|
||||
* @return true if text alignment resolution can be done otherwise return false.
|
||||
*/
|
||||
public boolean canResolveTextAlignment() {
|
||||
private boolean canResolveTextAlignment() {
|
||||
switch (getTextAlignment()) {
|
||||
case TEXT_DIRECTION_INHERIT:
|
||||
return (mParent != null);
|
||||
@ -16808,31 +16805,13 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when text alignment has been resolved. Subclasses that care about text alignment
|
||||
* resolution should override this method.
|
||||
* Reset resolved text alignment.
|
||||
*
|
||||
* The default implementation does nothing.
|
||||
*/
|
||||
public void onResolvedTextAlignmentChanged() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset resolved text alignment. Text alignment can be resolved with a call to
|
||||
* getResolvedTextAlignment(). Will call {@link View#onResolvedTextAlignmentReset} when
|
||||
* reset is done.
|
||||
* @hide
|
||||
*/
|
||||
public void resetResolvedTextAlignment() {
|
||||
// Reset any previous text alignment resolution
|
||||
mPrivateFlags2 &= ~(PFLAG2_TEXT_ALIGNMENT_RESOLVED | PFLAG2_TEXT_ALIGNMENT_RESOLVED_MASK);
|
||||
onResolvedTextAlignmentReset();
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when text alignment is reset. Subclasses that care about text alignment reset should
|
||||
* override this method and do a reset of the text alignment of their children. The default
|
||||
* implementation does nothing.
|
||||
*/
|
||||
public void onResolvedTextAlignmentReset() {
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -5257,36 +5257,23 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@Override
|
||||
public void onResolvedLayoutDirectionReset() {
|
||||
public void resetResolvedLayoutDirection() {
|
||||
super.resetResolvedLayoutDirection();
|
||||
|
||||
// Take care of resetting the children resolution too
|
||||
final int count = getChildCount();
|
||||
int count = getChildCount();
|
||||
for (int i = 0; i < count; i++) {
|
||||
final View child = getChildAt(i);
|
||||
if (child.getLayoutDirection() == LAYOUT_DIRECTION_INHERIT) {
|
||||
child.resetResolvedLayoutDirection();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResolvedTextDirectionReset() {
|
||||
// Take care of resetting the children resolution too
|
||||
final int count = getChildCount();
|
||||
for (int i = 0; i < count; i++) {
|
||||
final View child = getChildAt(i);
|
||||
if (child.getTextDirection() == TEXT_DIRECTION_INHERIT) {
|
||||
child.resetResolvedTextDirection();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResolvedTextAlignmentReset() {
|
||||
// Take care of resetting the children resolution too
|
||||
final int count = getChildCount();
|
||||
for (int i = 0; i < count; i++) {
|
||||
final View child = getChildAt(i);
|
||||
if (child.getTextAlignment() == TEXT_ALIGNMENT_INHERIT) {
|
||||
child.resetResolvedTextAlignment();
|
||||
}
|
||||
|
@ -308,6 +308,9 @@ public abstract class AbsSeekBar extends ProgressBar {
|
||||
thumb.setBounds(left, topBound, left + thumbWidth, bottomBound);
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@Override
|
||||
public void onResolveDrawables(int layoutDirection) {
|
||||
super.onResolveDrawables(layoutDirection);
|
||||
|
@ -680,7 +680,7 @@ public class ImageView extends View {
|
||||
d.setState(getDrawableState());
|
||||
}
|
||||
d.setLevel(mLevel);
|
||||
d.setLayoutDirection(getLayoutDirection());
|
||||
d.setLayoutDirection(getResolvedLayoutDirection());
|
||||
mDrawableWidth = d.getIntrinsicWidth();
|
||||
mDrawableHeight = d.getIntrinsicHeight();
|
||||
applyColorMod();
|
||||
|
@ -565,6 +565,9 @@ public class ProgressBar extends View {
|
||||
if (mIndeterminateDrawable != null) mIndeterminateDrawable.jumpToCurrentState();
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@Override
|
||||
public void onResolveDrawables(int layoutDirection) {
|
||||
final Drawable d = mCurrentDrawable;
|
||||
|
@ -1354,7 +1354,7 @@ public class SearchView extends LinearLayout implements CollapsibleActionView {
|
||||
};
|
||||
|
||||
@Override
|
||||
public void onResolvedLayoutDirectionChanged() {
|
||||
public void onRtlPropertiesChanged() {
|
||||
mQueryTextView.setLayoutDirection(getResolvedLayoutDirection());
|
||||
}
|
||||
|
||||
|
@ -5635,7 +5635,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResolvedLayoutDirectionReset() {
|
||||
public void onRtlPropertiesChanged() {
|
||||
if (mLayoutAlignment != null) {
|
||||
if (mResolvedTextAlignment == TEXT_ALIGNMENT_VIEW_START ||
|
||||
mResolvedTextAlignment == TEXT_ALIGNMENT_VIEW_END) {
|
||||
@ -5733,7 +5733,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
||||
}
|
||||
|
||||
if (mTextDir == null) {
|
||||
resolveTextDirection();
|
||||
mTextDir = getTextDirectionHeuristic();
|
||||
}
|
||||
|
||||
mLayout = makeSingleLayout(wantWidth, boring, ellipsisWidth, alignment, shouldEllipsize,
|
||||
@ -5995,7 +5995,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
||||
BoringLayout.Metrics hintBoring = UNKNOWN_BORING;
|
||||
|
||||
if (mTextDir == null) {
|
||||
resolveTextDirection();
|
||||
getTextDirectionHeuristic();
|
||||
}
|
||||
|
||||
int des = -1;
|
||||
@ -8181,13 +8181,11 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
||||
return mEditor.mInBatchEditControllers;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResolvedTextDirectionChanged() {
|
||||
TextDirectionHeuristic getTextDirectionHeuristic() {
|
||||
if (hasPasswordTransformationMethod()) {
|
||||
// TODO: take care of the content direction to show the password text and dots justified
|
||||
// to the left or to the right
|
||||
mTextDir = TextDirectionHeuristics.LOCALE;
|
||||
return;
|
||||
return TextDirectionHeuristics.LOCALE;
|
||||
}
|
||||
|
||||
// Always need to resolve layout direction first
|
||||
@ -8198,24 +8196,22 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
||||
switch (textDir) {
|
||||
default:
|
||||
case TEXT_DIRECTION_FIRST_STRONG:
|
||||
mTextDir = (defaultIsRtl ? TextDirectionHeuristics.FIRSTSTRONG_RTL :
|
||||
return (defaultIsRtl ? TextDirectionHeuristics.FIRSTSTRONG_RTL :
|
||||
TextDirectionHeuristics.FIRSTSTRONG_LTR);
|
||||
break;
|
||||
case TEXT_DIRECTION_ANY_RTL:
|
||||
mTextDir = TextDirectionHeuristics.ANYRTL_LTR;
|
||||
break;
|
||||
return TextDirectionHeuristics.ANYRTL_LTR;
|
||||
case TEXT_DIRECTION_LTR:
|
||||
mTextDir = TextDirectionHeuristics.LTR;
|
||||
break;
|
||||
return TextDirectionHeuristics.LTR;
|
||||
case TEXT_DIRECTION_RTL:
|
||||
mTextDir = TextDirectionHeuristics.RTL;
|
||||
break;
|
||||
return TextDirectionHeuristics.RTL;
|
||||
case TEXT_DIRECTION_LOCALE:
|
||||
mTextDir = TextDirectionHeuristics.LOCALE;
|
||||
break;
|
||||
return TextDirectionHeuristics.LOCALE;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@Override
|
||||
public void onResolveDrawables(int layoutDirection) {
|
||||
// No need to resolve twice
|
||||
|
@ -161,6 +161,9 @@ public class ActionBarContainer extends FrameLayout {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @hide
|
||||
*/
|
||||
@Override
|
||||
public void onResolveDrawables(int layoutDirection) {
|
||||
super.onResolveDrawables(layoutDirection);
|
||||
|
Reference in New Issue
Block a user