am 4c1e73b6: Merge e57aa434 from honeycomb-mr1. do not merge.
* commit '4c1e73b69a13a4f24a8fc123f599a9e9d8505525': Merge e57aa434 from honeycomb-mr1. do not merge.
This commit is contained in:
@@ -43,6 +43,8 @@ import java.io.IOException;
|
||||
*/
|
||||
public class LayoutInflater_Delegate {
|
||||
|
||||
public static boolean sIsInInclude = false;
|
||||
|
||||
@LayoutlibDelegate
|
||||
/*package*/ static void parseInclude(LayoutInflater thisInflater,
|
||||
XmlPullParser parser, View parent, AttributeSet attrs)
|
||||
@@ -109,10 +111,22 @@ public class LayoutInflater_Delegate {
|
||||
// false means we need to rely on the included layout params.
|
||||
ViewGroup.LayoutParams params = null;
|
||||
try {
|
||||
// ---- START CHANGES
|
||||
sIsInInclude = true;
|
||||
// ---- END CHANGES
|
||||
|
||||
params = group.generateLayoutParams(attrs);
|
||||
} catch (RuntimeException e) {
|
||||
// ---- START CHANGES
|
||||
sIsInInclude = false;
|
||||
// ---- END CHANGES
|
||||
|
||||
params = group.generateLayoutParams(childAttrs);
|
||||
} finally {
|
||||
// ---- START CHANGES
|
||||
sIsInInclude = false;
|
||||
// ---- END CHANGES
|
||||
|
||||
if (params != null) {
|
||||
view.setLayoutParams(params);
|
||||
}
|
||||
|
||||
@@ -36,6 +36,7 @@ import android.content.res.TypedArray;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import android.util.DisplayMetrics;
|
||||
import android.util.TypedValue;
|
||||
import android.view.LayoutInflater_Delegate;
|
||||
import android.view.ViewGroup.LayoutParams;
|
||||
|
||||
import java.io.File;
|
||||
@@ -471,40 +472,23 @@ public final class BridgeTypedArray extends TypedArray {
|
||||
*/
|
||||
@Override
|
||||
public int getDimensionPixelSize(int index, int defValue) {
|
||||
if (mResourceData[index] == null) {
|
||||
try {
|
||||
return getDimension(index);
|
||||
} catch (RuntimeException e) {
|
||||
if (mResourceData[index] != null) {
|
||||
String s = mResourceData[index].getValue();
|
||||
|
||||
if (s != null) {
|
||||
// looks like we were unable to resolve the dimension value
|
||||
Bridge.getLog().warning(LayoutLog.TAG_RESOURCES_FORMAT,
|
||||
String.format(
|
||||
"\"%1$s\" in attribute \"%2$s\" is not a valid format.",
|
||||
s, mNames[index]), null /*data*/);
|
||||
}
|
||||
}
|
||||
|
||||
return defValue;
|
||||
}
|
||||
|
||||
String s = mResourceData[index].getValue();
|
||||
|
||||
if (s == null) {
|
||||
return defValue;
|
||||
} else if (s.equals(BridgeConstants.MATCH_PARENT) ||
|
||||
s.equals(BridgeConstants.FILL_PARENT)) {
|
||||
return LayoutParams.MATCH_PARENT;
|
||||
} else if (s.equals(BridgeConstants.WRAP_CONTENT)) {
|
||||
return LayoutParams.WRAP_CONTENT;
|
||||
} else if (RenderResources.REFERENCE_NULL.equals(s)) {
|
||||
return defValue;
|
||||
}
|
||||
|
||||
if (ResourceHelper.stringToFloat(s, mValue)) {
|
||||
float f = mValue.getDimension(mBridgeResources.mMetrics);
|
||||
|
||||
final int res = (int)(f+0.5f);
|
||||
if (res != 0) return res;
|
||||
if (f == 0) return 0;
|
||||
if (f > 0) return 1;
|
||||
return defValue; // this is basically unreachable.
|
||||
}
|
||||
|
||||
// looks like we were unable to resolve the dimension value
|
||||
Bridge.getLog().warning(LayoutLog.TAG_RESOURCES_FORMAT,
|
||||
String.format(
|
||||
"\"%1$s\" in attribute \"%2$s\" is not a valid format.",
|
||||
s, mNames[index]), null /*data*/);
|
||||
|
||||
return defValue;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -521,7 +505,20 @@ public final class BridgeTypedArray extends TypedArray {
|
||||
*/
|
||||
@Override
|
||||
public int getLayoutDimension(int index, String name) {
|
||||
return getDimensionPixelSize(index, 0);
|
||||
try {
|
||||
// this will throw an exception
|
||||
return getDimension(index);
|
||||
} catch (RuntimeException e) {
|
||||
|
||||
if (LayoutInflater_Delegate.sIsInInclude) {
|
||||
throw new RuntimeException();
|
||||
}
|
||||
|
||||
Bridge.getLog().warning(LayoutLog.TAG_RESOURCES_FORMAT,
|
||||
"You must supply a " + name + " attribute.", null);
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -529,6 +526,36 @@ public final class BridgeTypedArray extends TypedArray {
|
||||
return getDimensionPixelSize(index, defValue);
|
||||
}
|
||||
|
||||
private int getDimension(int index) {
|
||||
if (mResourceData[index] == null) {
|
||||
throw new RuntimeException();
|
||||
}
|
||||
|
||||
String s = mResourceData[index].getValue();
|
||||
|
||||
if (s == null) {
|
||||
throw new RuntimeException();
|
||||
} else if (s.equals(BridgeConstants.MATCH_PARENT) ||
|
||||
s.equals(BridgeConstants.FILL_PARENT)) {
|
||||
return LayoutParams.MATCH_PARENT;
|
||||
} else if (s.equals(BridgeConstants.WRAP_CONTENT)) {
|
||||
return LayoutParams.WRAP_CONTENT;
|
||||
} else if (RenderResources.REFERENCE_NULL.equals(s)) {
|
||||
throw new RuntimeException();
|
||||
}
|
||||
|
||||
if (ResourceHelper.stringToFloat(s, mValue)) {
|
||||
float f = mValue.getDimension(mBridgeResources.mMetrics);
|
||||
|
||||
final int res = (int)(f+0.5f);
|
||||
if (res != 0) return res;
|
||||
if (f == 0) return 0;
|
||||
if (f > 0) return 1;
|
||||
}
|
||||
|
||||
throw new RuntimeException();
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a fractional unit attribute at <var>index</var>.
|
||||
*
|
||||
|
||||
@@ -102,7 +102,6 @@ public final class CreateInfo implements ICreateInfo {
|
||||
"android.view.LayoutInflater#parseInclude",
|
||||
"android.view.View#isInEditMode",
|
||||
"com.android.internal.util.XmlUtils#convertValueToInt",
|
||||
// TODO: comment out once DelegateClass is working
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user