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