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
be4c5dd9d0
@ -24954,7 +24954,6 @@ package android.view {
|
|||||||
method public float getPivotX();
|
method public float getPivotX();
|
||||||
method public float getPivotY();
|
method public float getPivotY();
|
||||||
method public int getResolvedTextAlignment();
|
method public int getResolvedTextAlignment();
|
||||||
method public int getResolvedTextDirection();
|
|
||||||
method public android.content.res.Resources getResources();
|
method public android.content.res.Resources getResources();
|
||||||
method public final int getRight();
|
method public final int getRight();
|
||||||
method protected float getRightFadingEdgeStrength();
|
method protected float getRightFadingEdgeStrength();
|
||||||
|
@ -16500,6 +16500,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
* {@link #TEXT_DIRECTION_LTR},
|
* {@link #TEXT_DIRECTION_LTR},
|
||||||
* {@link #TEXT_DIRECTION_RTL},
|
* {@link #TEXT_DIRECTION_RTL},
|
||||||
* {@link #TEXT_DIRECTION_LOCALE}
|
* {@link #TEXT_DIRECTION_LOCALE}
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
*/
|
*/
|
||||||
@ViewDebug.ExportedProperty(category = "text", mapping = {
|
@ViewDebug.ExportedProperty(category = "text", mapping = {
|
||||||
@ViewDebug.IntToString(from = TEXT_DIRECTION_INHERIT, to = "INHERIT"),
|
@ViewDebug.IntToString(from = TEXT_DIRECTION_INHERIT, to = "INHERIT"),
|
||||||
@ -16509,7 +16511,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
@ViewDebug.IntToString(from = TEXT_DIRECTION_RTL, to = "RTL"),
|
@ViewDebug.IntToString(from = TEXT_DIRECTION_RTL, to = "RTL"),
|
||||||
@ViewDebug.IntToString(from = TEXT_DIRECTION_LOCALE, to = "LOCALE")
|
@ViewDebug.IntToString(from = TEXT_DIRECTION_LOCALE, to = "LOCALE")
|
||||||
})
|
})
|
||||||
public int getTextDirection() {
|
public int getRawTextDirection() {
|
||||||
return (mPrivateFlags2 & PFLAG2_TEXT_DIRECTION_MASK) >> PFLAG2_TEXT_DIRECTION_MASK_SHIFT;
|
return (mPrivateFlags2 & PFLAG2_TEXT_DIRECTION_MASK) >> PFLAG2_TEXT_DIRECTION_MASK_SHIFT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -16526,7 +16528,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
* {@link #TEXT_DIRECTION_LOCALE}
|
* {@link #TEXT_DIRECTION_LOCALE}
|
||||||
*/
|
*/
|
||||||
public void setTextDirection(int textDirection) {
|
public void setTextDirection(int textDirection) {
|
||||||
if (getTextDirection() != textDirection) {
|
if (getRawTextDirection() != textDirection) {
|
||||||
// Reset the current text direction and the resolved one
|
// Reset the current text direction and the resolved one
|
||||||
mPrivateFlags2 &= ~PFLAG2_TEXT_DIRECTION_MASK;
|
mPrivateFlags2 &= ~PFLAG2_TEXT_DIRECTION_MASK;
|
||||||
resetResolvedTextDirection();
|
resetResolvedTextDirection();
|
||||||
@ -16543,10 +16545,10 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
/**
|
/**
|
||||||
* Return the resolved text direction.
|
* Return the resolved text direction.
|
||||||
*
|
*
|
||||||
* This needs resolution if the value is TEXT_DIRECTION_INHERIT. The resolution matches
|
* This needs resolution if the value is TEXT_DIRECTION_INHERIT. The resolution matches what has
|
||||||
* {@link #getTextDirection()}if it is not TEXT_DIRECTION_INHERIT, otherwise resolution proceeds
|
* been set by {@link #setTextDirection(int)} if it is not TEXT_DIRECTION_INHERIT, otherwise the
|
||||||
* up the parent chain of the view. if there is no parent, then it will return the default
|
* resolution proceeds up the parent chain of the view. If there is no parent, then it will
|
||||||
* {@link #TEXT_DIRECTION_FIRST_STRONG}.
|
* return the default {@link #TEXT_DIRECTION_FIRST_STRONG}.
|
||||||
*
|
*
|
||||||
* @return the resolved text direction. Returns one of:
|
* @return the resolved text direction. Returns one of:
|
||||||
*
|
*
|
||||||
@ -16556,7 +16558,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
* {@link #TEXT_DIRECTION_RTL},
|
* {@link #TEXT_DIRECTION_RTL},
|
||||||
* {@link #TEXT_DIRECTION_LOCALE}
|
* {@link #TEXT_DIRECTION_LOCALE}
|
||||||
*/
|
*/
|
||||||
public int getResolvedTextDirection() {
|
public int getTextDirection() {
|
||||||
// The text direction will be resolved only if needed
|
// The text direction will be resolved only if needed
|
||||||
if ((mPrivateFlags2 & PFLAG2_TEXT_DIRECTION_RESOLVED) != PFLAG2_TEXT_DIRECTION_RESOLVED) {
|
if ((mPrivateFlags2 & PFLAG2_TEXT_DIRECTION_RESOLVED) != PFLAG2_TEXT_DIRECTION_RESOLVED) {
|
||||||
resolveTextDirection();
|
resolveTextDirection();
|
||||||
@ -16575,14 +16577,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
|
|
||||||
if (hasRtlSupport()) {
|
if (hasRtlSupport()) {
|
||||||
// Set resolved text direction flag depending on text direction flag
|
// Set resolved text direction flag depending on text direction flag
|
||||||
final int textDirection = getTextDirection();
|
final int textDirection = getRawTextDirection();
|
||||||
switch(textDirection) {
|
switch(textDirection) {
|
||||||
case TEXT_DIRECTION_INHERIT:
|
case TEXT_DIRECTION_INHERIT:
|
||||||
if (canResolveTextDirection()) {
|
if (canResolveTextDirection()) {
|
||||||
ViewGroup viewGroup = ((ViewGroup) mParent);
|
ViewGroup viewGroup = ((ViewGroup) mParent);
|
||||||
|
|
||||||
// Set current resolved direction to the same value as the parent's one
|
// Set current resolved direction to the same value as the parent's one
|
||||||
final int parentResolvedDirection = viewGroup.getResolvedTextDirection();
|
final int parentResolvedDirection = viewGroup.getTextDirection();
|
||||||
switch (parentResolvedDirection) {
|
switch (parentResolvedDirection) {
|
||||||
case TEXT_DIRECTION_FIRST_STRONG:
|
case TEXT_DIRECTION_FIRST_STRONG:
|
||||||
case TEXT_DIRECTION_ANY_RTL:
|
case TEXT_DIRECTION_ANY_RTL:
|
||||||
@ -16628,7 +16630,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
* @return true if text direction resolution can be done otherwise return false.
|
* @return true if text direction resolution can be done otherwise return false.
|
||||||
*/
|
*/
|
||||||
private boolean canResolveTextDirection() {
|
private boolean canResolveTextDirection() {
|
||||||
switch (getTextDirection()) {
|
switch (getRawTextDirection()) {
|
||||||
case TEXT_DIRECTION_INHERIT:
|
case TEXT_DIRECTION_INHERIT:
|
||||||
return (mParent != null) && (mParent instanceof ViewGroup);
|
return (mParent != null) && (mParent instanceof ViewGroup);
|
||||||
default:
|
default:
|
||||||
@ -16638,7 +16640,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Reset resolved text direction. Text direction can be resolved with a call to
|
* Reset resolved text direction. Text direction can be resolved with a call to
|
||||||
* getResolvedTextDirection().
|
* getTextDirection().
|
||||||
*
|
*
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
@ -16646,6 +16648,13 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
|
|||||||
mPrivateFlags2 &= ~(PFLAG2_TEXT_DIRECTION_RESOLVED | PFLAG2_TEXT_DIRECTION_RESOLVED_MASK);
|
mPrivateFlags2 &= ~(PFLAG2_TEXT_DIRECTION_RESOLVED | PFLAG2_TEXT_DIRECTION_RESOLVED_MASK);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public boolean isTextDirectionInherited() {
|
||||||
|
return (getRawTextDirection() == TEXT_DIRECTION_INHERIT);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the value specifying the text alignment or policy that was set with
|
* Return the value specifying the text alignment or policy that was set with
|
||||||
* {@link #setTextAlignment(int)}.
|
* {@link #setTextAlignment(int)}.
|
||||||
|
@ -5271,7 +5271,7 @@ public abstract class ViewGroup extends View implements ViewParent, ViewManager
|
|||||||
if (child.isLayoutDirectionInherited()) {
|
if (child.isLayoutDirectionInherited()) {
|
||||||
child.resetResolvedLayoutDirection();
|
child.resetResolvedLayoutDirection();
|
||||||
}
|
}
|
||||||
if (child.getTextDirection() == TEXT_DIRECTION_INHERIT) {
|
if (child.isTextDirectionInherited()) {
|
||||||
child.resetResolvedTextDirection();
|
child.resetResolvedTextDirection();
|
||||||
}
|
}
|
||||||
if (child.getTextAlignment() == TEXT_ALIGNMENT_INHERIT) {
|
if (child.getTextAlignment() == TEXT_ALIGNMENT_INHERIT) {
|
||||||
|
@ -8192,8 +8192,7 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
|
|||||||
final boolean defaultIsRtl = (getLayoutDirection() == LAYOUT_DIRECTION_RTL);
|
final boolean defaultIsRtl = (getLayoutDirection() == LAYOUT_DIRECTION_RTL);
|
||||||
|
|
||||||
// Now, we can select the heuristic
|
// Now, we can select the heuristic
|
||||||
int textDir = getResolvedTextDirection();
|
switch (getTextDirection()) {
|
||||||
switch (textDir) {
|
|
||||||
default:
|
default:
|
||||||
case TEXT_DIRECTION_FIRST_STRONG:
|
case TEXT_DIRECTION_FIRST_STRONG:
|
||||||
return (defaultIsRtl ? TextDirectionHeuristics.FIRSTSTRONG_RTL :
|
return (defaultIsRtl ? TextDirectionHeuristics.FIRSTSTRONG_RTL :
|
||||||
|
Reference in New Issue
Block a user