Bugfix for GridLayout assuming that the x value of last column index is maximal. This is not the case when column indexes are defined incorrectly and GridLayout should still work in this case.
Change-Id: I5deb3fb43ed1dd16dd20868854b96ebae4d30623
This commit is contained in:
@@ -494,6 +494,14 @@ public class GridLayout extends ViewGroup {
|
||||
requestLayout();
|
||||
}
|
||||
|
||||
private static int max2(int[] a, int valueIfEmpty) {
|
||||
int result = valueIfEmpty;
|
||||
for (int i = 0, N = a.length; i < N; i++) {
|
||||
result = Math.max(result, a[i]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private static int sum(float[] a) {
|
||||
int result = 0;
|
||||
for (int i = 0, length = a.length; i < length; i++) {
|
||||
@@ -1409,7 +1417,7 @@ public class GridLayout extends ViewGroup {
|
||||
// External entry points
|
||||
|
||||
private int size(int[] locations) {
|
||||
return locations[locations.length - 1] - locations[0];
|
||||
return max2(locations, 0) - locations[0];
|
||||
}
|
||||
|
||||
private int getMin() {
|
||||
@@ -1878,21 +1886,13 @@ public class GridLayout extends ViewGroup {
|
||||
return result;
|
||||
}
|
||||
|
||||
private static int max(int[] a, int valueIfEmpty) {
|
||||
int result = valueIfEmpty;
|
||||
for (int i = 0, length = a.length; i < length; i++) {
|
||||
result = Math.max(result, a[i]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
Create a compact array of keys or values using the supplied index.
|
||||
*/
|
||||
private static <K> K[] compact(K[] a, int[] index) {
|
||||
int size = a.length;
|
||||
Class<?> componentType = a.getClass().getComponentType();
|
||||
K[] result = (K[]) Array.newInstance(componentType, max(index, -1) + 1);
|
||||
K[] result = (K[]) Array.newInstance(componentType, max2(index, -1) + 1);
|
||||
|
||||
// this overwrite duplicates, retaining the last equivalent entry
|
||||
for (int i = 0; i < size; i++) {
|
||||
|
||||
@@ -19,14 +19,17 @@
|
||||
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
||||
android:useDefaultMargins="true"
|
||||
android:marginsIncludedInAlignment="false"
|
||||
|
||||
android:columnCount="4"
|
||||
>
|
||||
|
||||
<TextView
|
||||
android:text="Email account"
|
||||
android:textSize="48dip"
|
||||
|
||||
android:layout_columnSpan="4"
|
||||
android:layout_gravity="center_horizontal"
|
||||
/>
|
||||
@@ -34,12 +37,14 @@
|
||||
<TextView
|
||||
android:text="You can configure email in just a few steps:"
|
||||
android:textSize="20dip"
|
||||
|
||||
android:layout_columnSpan="4"
|
||||
android:layout_gravity="left"
|
||||
/>
|
||||
|
||||
<TextView
|
||||
android:text="Email address:"
|
||||
|
||||
android:layout_gravity="right"
|
||||
/>
|
||||
|
||||
@@ -49,6 +54,7 @@
|
||||
|
||||
<TextView
|
||||
android:text="Password:"
|
||||
|
||||
android:layout_column="0"
|
||||
android:layout_gravity="right"
|
||||
/>
|
||||
@@ -58,14 +64,15 @@
|
||||
/>
|
||||
|
||||
<Space
|
||||
android:layout_rowWeight="1"
|
||||
android:layout_columnWeight="1"
|
||||
android:layout_row="4"
|
||||
android:layout_column="2"
|
||||
android:layout_rowWeight="1"
|
||||
android:layout_columnWeight="1"
|
||||
/>
|
||||
|
||||
<Button
|
||||
android:text="Manual setup"
|
||||
|
||||
android:layout_row="5"
|
||||
android:layout_column="3"
|
||||
android:layout_gravity="fill_horizontal"
|
||||
@@ -73,6 +80,7 @@
|
||||
|
||||
<Button
|
||||
android:text="Next"
|
||||
|
||||
android:layout_column="3"
|
||||
android:layout_gravity="fill_horizontal"
|
||||
/>
|
||||
|
||||
@@ -20,11 +20,15 @@ import android.app.Activity;
|
||||
import android.content.Context;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
|
||||
import android.widget.*;
|
||||
import android.widget.Button;
|
||||
import android.widget.EditText;
|
||||
import android.widget.GridLayout;
|
||||
import android.widget.Space;
|
||||
import android.widget.TextView;
|
||||
|
||||
import static android.text.InputType.TYPE_CLASS_TEXT;
|
||||
import static android.view.inputmethod.EditorInfo.*;
|
||||
import static android.view.inputmethod.EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS;
|
||||
import static android.view.inputmethod.EditorInfo.TYPE_TEXT_VARIATION_PASSWORD;
|
||||
import static android.widget.GridLayout.*;
|
||||
|
||||
public class Activity2 extends Activity {
|
||||
@@ -42,12 +46,12 @@ public class Activity2 extends Activity {
|
||||
Group row6 = new Group(6, CENTER);
|
||||
Group row7 = new Group(7, CENTER);
|
||||
|
||||
Group col1a = new Group(1, 5, CENTER);
|
||||
Group col1b = new Group(1, 5, LEFT);
|
||||
Group col1a = new Group(1, 4, CENTER);
|
||||
Group col1b = new Group(1, 4, LEFT);
|
||||
Group col1c = new Group(1, RIGHT);
|
||||
Group col2 = new Group(2, LEFT);
|
||||
Group col3 = new Group(3, FILL);
|
||||
Group col4 = new Group(4, FILL);
|
||||
Group col2 = new Group(2, LEFT);
|
||||
Group col3 = new Group(3, FILL);
|
||||
Group col4 = new Group(4, FILL);
|
||||
|
||||
{
|
||||
TextView v = new TextView(context);
|
||||
@@ -55,20 +59,17 @@ public class Activity2 extends Activity {
|
||||
v.setText("Email setup");
|
||||
vg.addView(v, new LayoutParams(row1, col1a));
|
||||
}
|
||||
|
||||
{
|
||||
TextView v = new TextView(context);
|
||||
v.setTextSize(20);
|
||||
v.setText("You can configure email in just a few steps:");
|
||||
vg.addView(v, new LayoutParams(row2, col1b));
|
||||
}
|
||||
|
||||
{
|
||||
TextView v = new TextView(context);
|
||||
v.setText("Email address:");
|
||||
vg.addView(v, new LayoutParams(row3, col1c));
|
||||
}
|
||||
|
||||
{
|
||||
EditText v = new EditText(context);
|
||||
v.setInputType(TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
|
||||
@@ -78,13 +79,11 @@ public class Activity2 extends Activity {
|
||||
vg.addView(v, lp);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
TextView v = new TextView(context);
|
||||
v.setText("Password:");
|
||||
vg.addView(v, new LayoutParams(row4, col1c));
|
||||
}
|
||||
|
||||
{
|
||||
TextView v = new EditText(context);
|
||||
v.setInputType(TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PASSWORD);
|
||||
@@ -94,7 +93,6 @@ public class Activity2 extends Activity {
|
||||
vg.addView(v, lp);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
Space v = new Space(context);
|
||||
{
|
||||
@@ -104,13 +102,11 @@ public class Activity2 extends Activity {
|
||||
vg.addView(v, lp);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
Button v = new Button(context);
|
||||
v.setText("Manual setup");
|
||||
vg.addView(v, new LayoutParams(row6, col4));
|
||||
}
|
||||
|
||||
{
|
||||
Button v = new Button(context);
|
||||
v.setText("Next");
|
||||
|
||||
Reference in New Issue
Block a user