Skip to content

Commit 6871416

Browse files
mdvaccafacebook-github-bot
authored andcommitted
Add "resizeMode" prop support on TextInlineView
Summary: changelog: [Android] [Added] Add "resizeMode" prop support on TextInlineView Reviewed By: JoshuaGross Differential Revision: D19509347 fbshipit-source-id: 0281ae6e958401aaaaa10599df892a2b60a3c615
1 parent 6a1438c commit 6871416

File tree

3 files changed

+21
-3
lines changed

3 files changed

+21
-3
lines changed

ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/BUCK

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ rn_android_library(
2222
react_native_target("java/com/facebook/react/modules/fresco:fresco"),
2323
react_native_target("java/com/facebook/react/uimanager:uimanager"),
2424
react_native_target("java/com/facebook/react/uimanager/annotations:annotations"),
25+
react_native_target("java/com/facebook/react/views/image:image"),
2526
react_native_target("java/com/facebook/react/views/text:text"),
2627
],
2728
)

ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageShadowNode.java

+9-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import com.facebook.react.bridge.ReadableArray;
1919
import com.facebook.react.bridge.ReadableMap;
2020
import com.facebook.react.bridge.ReadableType;
21+
import com.facebook.react.uimanager.ViewProps;
2122
import com.facebook.react.uimanager.annotations.ReactProp;
2223
import com.facebook.react.views.text.ReactTextInlineImageShadowNode;
2324
import com.facebook.react.views.text.TextInlineImageSpan;
@@ -32,6 +33,7 @@ public class FrescoBasedReactTextInlineImageShadowNode extends ReactTextInlineIm
3233
private final AbstractDraweeControllerBuilder mDraweeControllerBuilder;
3334
private final @Nullable Object mCallerContext;
3435
private float mWidth = YogaConstants.UNDEFINED;
36+
private @Nullable String mResizeMode;
3537
private float mHeight = YogaConstants.UNDEFINED;
3638
private int mTintColor = 0;
3739

@@ -97,6 +99,11 @@ public void setHeight(Dynamic height) {
9799
}
98100
}
99101

102+
@ReactProp(name = ViewProps.RESIZE_MODE)
103+
public void setResizeMode(@Nullable String resizeMode) {
104+
mResizeMode = resizeMode;
105+
}
106+
100107
public @Nullable Uri getUri() {
101108
return mUri;
102109
}
@@ -136,7 +143,8 @@ public TextInlineImageSpan buildInlineImageSpan() {
136143
getUri(),
137144
getHeaders(),
138145
getDraweeControllerBuilder(),
139-
getCallerContext());
146+
getCallerContext(),
147+
mResizeMode);
140148
}
141149

142150
public AbstractDraweeControllerBuilder getDraweeControllerBuilder() {

ReactAndroid/src/main/java/com/facebook/react/views/text/frescosupport/FrescoBasedReactTextInlineImageSpan.java

+11-2
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import android.widget.TextView;
1717
import androidx.annotation.Nullable;
1818
import com.facebook.drawee.controller.AbstractDraweeControllerBuilder;
19+
import com.facebook.drawee.drawable.ScalingUtils;
1920
import com.facebook.drawee.generic.GenericDraweeHierarchy;
2021
import com.facebook.drawee.generic.GenericDraweeHierarchyBuilder;
2122
import com.facebook.drawee.interfaces.DraweeController;
@@ -25,6 +26,7 @@
2526
import com.facebook.react.bridge.ReadableMap;
2627
import com.facebook.react.modules.fresco.ReactNetworkImageRequest;
2728
import com.facebook.react.uimanager.PixelUtil;
29+
import com.facebook.react.views.image.ImageResizeMode;
2830
import com.facebook.react.views.text.TextInlineImageSpan;
2931

3032
/**
@@ -50,6 +52,7 @@ public class FrescoBasedReactTextInlineImageSpan extends TextInlineImageSpan {
5052
private Uri mUri;
5153
private int mWidth;
5254
private ReadableMap mHeaders;
55+
private String mResizeMode;
5356

5457
private @Nullable TextView mTextView;
5558

@@ -61,7 +64,8 @@ public FrescoBasedReactTextInlineImageSpan(
6164
@Nullable Uri uri,
6265
ReadableMap headers,
6366
AbstractDraweeControllerBuilder draweeControllerBuilder,
64-
@Nullable Object callerContext) {
67+
@Nullable Object callerContext,
68+
String resizeMode) {
6569
mDraweeHolder = new DraweeHolder(GenericDraweeHierarchyBuilder.newInstance(resources).build());
6670
mDraweeControllerBuilder = draweeControllerBuilder;
6771
mCallerContext = callerContext;
@@ -70,6 +74,7 @@ public FrescoBasedReactTextInlineImageSpan(
7074
mHeaders = headers;
7175
mWidth = (int) (PixelUtil.toPixelFromDIP(width));
7276
mHeight = (int) (PixelUtil.toPixelFromDIP(height));
77+
mResizeMode = resizeMode;
7378
}
7479

7580
/**
@@ -130,7 +135,7 @@ public void draw(
130135
ImageRequestBuilder imageRequestBuilder = ImageRequestBuilder.newBuilderWithSource(mUri);
131136
ImageRequest imageRequest =
132137
ReactNetworkImageRequest.fromBuilderWithHeaders(imageRequestBuilder, mHeaders);
133-
138+
mDraweeHolder.getHierarchy().setActualImageScaleType(getResizeMode(mResizeMode));
134139
DraweeController draweeController =
135140
mDraweeControllerBuilder
136141
.reset()
@@ -163,6 +168,10 @@ public void draw(
163168
canvas.restore();
164169
}
165170

171+
private ScalingUtils.ScaleType getResizeMode(String resizeMode) {
172+
return ImageResizeMode.toScaleType(resizeMode);
173+
}
174+
166175
@Override
167176
public int getWidth() {
168177
return mWidth;

0 commit comments

Comments
 (0)