Skip to content

Commit 9fda765

Browse files
hkurokawathagikura
authored andcommitted
Accept float value as Flex Grow/Shrink on the sample application (google#113)
* Add a UT to input a float value as Flex Grow. * Parse the input value as float for Flex Grow and Flex Shrink, parse the value as int for the others.
1 parent d5848db commit 9fda765

File tree

2 files changed

+48
-16
lines changed

2 files changed

+48
-16
lines changed

Diff for: app/src/androidTest/java/com/google/android/apps/flexbox/test/MainActivityTest.java

+20
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,26 @@ public void testEditFragment_changeFlexGrow() {
330330
is(flexboxLayout.getWidth() - second.getWidth() - third.getWidth()));
331331
}
332332

333+
@Test
334+
@FlakyTest(tolerance = TOLERANCE)
335+
public void testEditFragment_changeFlexGrowFloat() {
336+
MainActivity activity = mActivityRule.getActivity();
337+
FlexboxLayout flexboxLayout = (FlexboxLayout) activity.findViewById(R.id.flexbox_layout);
338+
assertNotNull(flexboxLayout);
339+
onView(withId(R.id.textview1)).perform(click());
340+
onView(withId(R.id.edit_text_flex_grow)).perform(replaceText("1.0"), closeSoftKeyboard());
341+
onView(withId(R.id.button_ok)).perform(click());
342+
TextView first = (TextView) activity.findViewById(R.id.textview1);
343+
TextView second = (TextView) activity.findViewById(R.id.textview2);
344+
TextView third = (TextView) activity.findViewById(R.id.textview3);
345+
assertNotNull(first);
346+
assertNotNull(second);
347+
assertNotNull(third);
348+
349+
assertThat(first.getWidth(),
350+
is(flexboxLayout.getWidth() - second.getWidth() - third.getWidth()));
351+
}
352+
333353
@Test
334354
@FlakyTest(tolerance = TOLERANCE)
335355
public void testEditFragment_changeFlexBasisPercent() {

Diff for: app/src/main/java/com/google/android/apps/flexbox/FlexItemEditFragment.java

+28-16
Original file line numberDiff line numberDiff line change
@@ -371,47 +371,59 @@ public void afterTextChanged(Editable editable) {
371371
!mInputValidator.isValidInput(editable.toString())) {
372372
return;
373373
}
374-
int intValue;
375-
try {
376-
intValue = Integer.valueOf(editable.toString());
377-
} catch (NumberFormatException | NullPointerException ignore) {
378-
return;
374+
final Number value;
375+
switch (mTextInputLayout.getId()) {
376+
case R.id.input_layout_flex_grow:
377+
case R.id.input_layout_flex_shrink:
378+
try {
379+
value = Float.valueOf(editable.toString());
380+
} catch (NumberFormatException | NullPointerException ignore) {
381+
return;
382+
}
383+
break;
384+
default:
385+
try {
386+
value = Integer.valueOf(editable.toString());
387+
} catch (NumberFormatException | NullPointerException ignore) {
388+
return;
389+
}
379390
}
391+
380392
switch (mTextInputLayout.getId()) {
381393
case R.id.input_layout_order:
382-
mFlexItem.order = intValue;
394+
mFlexItem.order = value.intValue();
383395
break;
384396
case R.id.input_layout_flex_grow:
385-
mFlexItem.flexGrow = intValue;
397+
mFlexItem.flexGrow = value.floatValue();
386398
break;
387399
case R.id.input_layout_flex_shrink:
388-
mFlexItem.flexShrink = intValue;
400+
mFlexItem.flexShrink = value.floatValue();
389401
break;
390402
case R.id.input_layout_width:
391-
mFlexItem.width = intValue;
403+
mFlexItem.width = value.intValue();
392404
break;
393405
case R.id.input_layout_height:
394-
mFlexItem.height = intValue;
406+
mFlexItem.height = value.intValue();
395407
break;
396408
case R.id.input_layout_flex_basis_percent:
397-
if (intValue != FlexboxLayout.LayoutParams.FLEX_BASIS_PERCENT_DEFAULT) {
398-
mFlexItem.flexBasisPercent = (float) (intValue / 100.0);
409+
if (value.intValue() != FlexboxLayout.LayoutParams.FLEX_BASIS_PERCENT_DEFAULT) {
410+
mFlexItem.flexBasisPercent = (float) (value.intValue() / 100.0);
399411
} else {
400412
mFlexItem.flexBasisPercent
401413
= FlexboxLayout.LayoutParams.FLEX_BASIS_PERCENT_DEFAULT;
402414
}
403415
break;
404416
case R.id.input_layout_min_width:
405-
mFlexItem.minWidth = intValue;
417+
mFlexItem.minWidth = value.intValue();
406418
break;
407419
case R.id.input_layout_min_height:
408-
mFlexItem.minHeight = intValue;
420+
mFlexItem.minHeight = value.intValue();
409421
break;
410422
case R.id.input_layout_max_width:
411-
mFlexItem.maxWidth = intValue;
423+
mFlexItem.maxWidth = value.intValue();
412424
break;
413425
case R.id.input_layout_max_height:
414-
mFlexItem.maxHeight = intValue;
426+
mFlexItem.maxHeight = value.intValue();
415427
break;
416428
}
417429
}

0 commit comments

Comments
 (0)