1a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown/*
2a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown * Copyright (C) 2011 The Android Open Source Project
3a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown *
4a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown * Licensed under the Apache License, Version 2.0 (the "License");
5a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown * you may not use this file except in compliance with the License.
6a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown * You may obtain a copy of the License at
7a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown *
8a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown *      http://www.apache.org/licenses/LICENSE-2.0
9a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown *
10a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown * Unless required by applicable law or agreed to in writing, software
11a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown * distributed under the License is distributed on an "AS IS" BASIS,
12a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown * See the License for the specific language governing permissions and
14a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown * limitations under the License.
15a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown */
16a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown
17a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownpackage com.example.android.supportv7.view;
18a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown
19a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport static android.support.v7.widget.GridLayout.ALIGN_BOUNDS;
20a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport static android.support.v7.widget.GridLayout.BASELINE;
21a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport static android.support.v7.widget.GridLayout.CENTER;
22a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport static android.support.v7.widget.GridLayout.FILL;
23a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport static android.support.v7.widget.GridLayout.LEFT;
24a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport static android.support.v7.widget.GridLayout.RIGHT;
25a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport static android.support.v7.widget.GridLayout.spec;
26a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport static android.text.InputType.TYPE_CLASS_TEXT;
27a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport static android.text.InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS;
28a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport static android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD;
29a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown
30a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport android.app.Activity;
31a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport android.content.Context;
32a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport android.content.res.Configuration;
33a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport android.os.Bundle;
34a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport android.support.v7.widget.GridLayout;
35a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport android.support.v7.widget.GridLayout.LayoutParams;
36a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport android.support.v7.widget.GridLayout.Spec;
37a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport android.view.View;
38a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport android.widget.Button;
39a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport android.widget.EditText;
40a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownimport android.widget.TextView;
41a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown
42a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown/**
43a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown * A form, showing use of the GridLayout API. Here we demonstrate use of the row/column order
44a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown * preserved property which allows rows and or columns to pass over each other when needed.
45a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown * The two buttons in the bottom right corner need to be separated from the other UI elements.
46a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown * This can either be done by separating rows or separating columns - but we don't need
47a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown * to do both and may only have enough space to do one or the other.
48a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown */
49a93f246322abde12a455b3aeb4606b5bad119270Jeff Brownpublic class GridLayout3 extends Activity {
50a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown    public static View create(Context context) {
51a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        GridLayout p = new GridLayout(context);
52a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        p.setUseDefaultMargins(true);
53a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        p.setAlignmentMode(ALIGN_BOUNDS);
54a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        Configuration configuration = context.getResources().getConfiguration();
55a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        if ((configuration.orientation == Configuration.ORIENTATION_PORTRAIT)) {
56a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            p.setColumnOrderPreserved(false);
57a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        } else {
58a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            p.setRowOrderPreserved(false);
59a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        }
60a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown
61a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        Spec titleRow              = spec(0);
62a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        Spec introRow              = spec(1);
63a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        Spec emailRow              = spec(2, BASELINE);
64a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        Spec passwordRow           = spec(3, BASELINE);
65a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        Spec button1Row            = spec(5);
66a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        Spec button2Row            = spec(6);
67a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown
68a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        Spec centerInAllColumns    = spec(0, 4, CENTER);
69a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        Spec leftAlignInAllColumns = spec(0, 4, LEFT);
70a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        Spec labelColumn           = spec(0, RIGHT);
71a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        Spec fieldColumn           = spec(1, LEFT);
72a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        Spec defineLastColumn      = spec(3);
73a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        Spec fillLastColumn        = spec(3, FILL);
74a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown
75a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        {
76a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            TextView c = new TextView(context);
77a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            c.setTextSize(32);
78a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            c.setText("Email setup");
79a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            p.addView(c, new LayoutParams(titleRow, centerInAllColumns));
80a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        }
81a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        {
82a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            TextView c = new TextView(context);
83a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            c.setTextSize(16);
84a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            c.setText("You can configure email in a few simple steps:");
85a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            p.addView(c, new LayoutParams(introRow, leftAlignInAllColumns));
86a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        }
87a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        {
88a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            TextView c = new TextView(context);
89a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            c.setText("Email address:");
90a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            p.addView(c, new LayoutParams(emailRow, labelColumn));
91a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        }
92a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        {
93a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            EditText c = new EditText(context);
94a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            c.setEms(10);
95a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            c.setInputType(TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_EMAIL_ADDRESS);
96a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            p.addView(c, new LayoutParams(emailRow, fieldColumn));
97a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        }
98a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        {
99a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            TextView c = new TextView(context);
100a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            c.setText("Password:");
101a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            p.addView(c, new LayoutParams(passwordRow, labelColumn));
102a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        }
103a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        {
104a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            EditText c = new EditText(context);
105a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            c.setEms(8);
106a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            c.setInputType(TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PASSWORD);
107a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            p.addView(c, new LayoutParams(passwordRow, fieldColumn));
108a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        }
109a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        {
110a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            Button c = new Button(context);
111a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            c.setText("Manual setup");
112a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            p.addView(c, new LayoutParams(button1Row, defineLastColumn));
113a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        }
114a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        {
115a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            Button c = new Button(context);
116a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            c.setText("Next");
117a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown            p.addView(c, new LayoutParams(button2Row, fillLastColumn));
118a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        }
119a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown
120a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        return p;
121a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown    }
122a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown
123a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown    @Override
124a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown    protected void onCreate(Bundle savedInstanceState) {
125a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        super.onCreate(savedInstanceState);
126a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown        setContentView(create(this));
127a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown    }
128a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown
129a93f246322abde12a455b3aeb4606b5bad119270Jeff Brown}