Skip to content

Commit 6e718ca

Browse files
Merge pull request #17796 from mxenabled/saumya/android_edit_box_fixes
[Android] Fix edit box font size and alignment
2 parents ca0a7f3 + 96ae677 commit 6e718ca

File tree

2 files changed

+22
-33
lines changed

2 files changed

+22
-33
lines changed

cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxEditBox.java

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public class Cocos2dxEditBox extends EditText {
121121

122122
private static final int kTextVerticalAlignmentTop = 0;
123123
private static final int kTextVerticalAlignmentCenter = 1;
124-
private static final int getkTextVerticalAlignmentBottom = 2;
124+
private static final int kTextVerticalAlignmentBottom = 2;
125125

126126
private int mInputFlagConstraints;
127127
private int mInputModeConstraints;
@@ -208,35 +208,40 @@ public void setTextHorizontalAlignment(int alignment) {
208208
int gravity = this.getGravity();
209209
switch (alignment) {
210210
case kTextHorizontalAlignmentLeft:
211-
gravity = gravity | Gravity.LEFT;
211+
gravity = (gravity & ~Gravity.RIGHT) | Gravity.LEFT ;
212212
break;
213213
case kTextHorizontalAlignmentCenter:
214-
gravity = gravity | Gravity.CENTER;
214+
gravity =(gravity & ~Gravity.RIGHT & ~Gravity.LEFT) | Gravity.CENTER_HORIZONTAL;
215215
break;
216216
case kTextHorizontalAlignmentRight:
217-
gravity = gravity | Gravity.RIGHT;
217+
gravity = (gravity & ~Gravity.LEFT) | Gravity.RIGHT ;
218218
break;
219219
default:
220-
gravity = gravity | Gravity.LEFT;
220+
gravity = (gravity & ~Gravity.RIGHT) | Gravity.LEFT ;
221221
break;
222222
}
223223
this.setGravity(gravity);
224224
}
225-
225+
226226
public void setTextVerticalAlignment(int alignment) {
227227
int gravity = this.getGravity();
228+
int padding = Cocos2dxEditBoxHelper.getPadding(mScaleX);
228229
switch (alignment) {
229230
case kTextVerticalAlignmentTop:
230-
gravity = gravity | Gravity.TOP;
231+
setPadding(padding, padding*3/4, 0, 0);
232+
gravity = (gravity & ~Gravity.BOTTOM) | Gravity.TOP ;
231233
break;
232234
case kTextVerticalAlignmentCenter:
233-
gravity = gravity | Gravity.CENTER_VERTICAL;
235+
setPadding(padding, 0, 0, padding/2);
236+
gravity =(gravity & ~Gravity.TOP & ~Gravity.BOTTOM) | Gravity.CENTER_VERTICAL;
234237
break;
235-
case getkTextVerticalAlignmentBottom:
236-
gravity = gravity | Gravity.BOTTOM;
238+
case kTextVerticalAlignmentBottom:
239+
//TODO: Add appropriate padding when this alignment is used
240+
gravity = (gravity & ~Gravity.TOP) | Gravity.BOTTOM ;
237241
break;
238242
default:
239-
gravity = gravity | Gravity.CENTER_VERTICAL;
243+
setPadding(padding, 0, 0, padding/2);
244+
gravity =(gravity & ~Gravity.TOP & ~Gravity.BOTTOM) | Gravity.CENTER_VERTICAL;
240245
break;
241246
}
242247

@@ -275,7 +280,6 @@ public void setInputMode(int inputMode){
275280
}
276281

277282
this.setInputType(this.mInputModeConstraints | this.mInputFlagConstraints);
278-
279283
}
280284

281285
@Override

cocos/platform/android/java/src/org/cocos2dx/lib/Cocos2dxEditBoxHelper.java

Lines changed: 6 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public class Cocos2dxEditBoxHelper {
5151

5252
private static SparseArray<Cocos2dxEditBox> mEditBoxArray;
5353
private static int mViewTag = 0;
54-
54+
private static float mPadding = 5.0f;
5555
//Call native methods
5656
private static native void editBoxEditingDidBegin(int index);
5757
public static void __editBoxEditingDidBegin(int index){
@@ -76,14 +76,8 @@ public Cocos2dxEditBoxHelper(ResizeLayout layout) {
7676
Cocos2dxEditBoxHelper.mEditBoxArray = new SparseArray<Cocos2dxEditBox>();
7777
}
7878

79-
public static int convertToSP(float point){
80-
Resources r = mCocos2dxActivity.getResources();
81-
82-
int convertedValue = (int)TypedValue.applyDimension(
83-
TypedValue.COMPLEX_UNIT_SP, point, r.getDisplayMetrics());
84-
85-
return convertedValue;
86-
79+
public static int getPadding(float scaleX){
80+
return (int)(mPadding*scaleX);
8781
}
8882

8983
public static int createEditBox(final int left, final int top, final int width, final int height, final float scaleX) {
@@ -103,16 +97,7 @@ public void run() {
10397
editBox.setTextColor(Color.WHITE);
10498
editBox.setSingleLine();
10599
editBox.setOpenGLViewScaleX(scaleX);
106-
Resources r = mCocos2dxActivity.getResources();
107-
float density = r.getDisplayMetrics().density;
108-
int paddingBottom = (int)(height * 0.33f / density);
109-
paddingBottom = convertToSP(paddingBottom - 5 * scaleX / density);
110-
paddingBottom = paddingBottom / 2;
111-
int paddingTop = paddingBottom;
112-
int paddingLeft = (int)(5 * scaleX / density);
113-
paddingLeft = convertToSP(paddingLeft);
114-
115-
editBox.setPadding(paddingLeft,paddingTop, 0, paddingBottom);
100+
editBox.setPadding(getPadding(scaleX), 0, 0, 0);
116101

117102

118103
FrameLayout.LayoutParams lParams = new FrameLayout.LayoutParams(
@@ -273,8 +258,8 @@ public void run() {
273258
if (fontSize >= 0){
274259
float density = mCocos2dxActivity.getResources().getDisplayMetrics().density;
275260
// Log.e("XXX", "density is " + density);
276-
editBox.setTextSize(TypedValue.COMPLEX_UNIT_SP,
277-
fontSize / density );
261+
editBox.setTextSize(TypedValue.COMPLEX_UNIT_PX,
262+
fontSize);
278263
}
279264
editBox.setTypeface(tf);
280265
}

0 commit comments

Comments
 (0)