12a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio/* 22a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio * Copyright (C) 2012 The Android Open Source Project 32a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio * 42a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio * Licensed under the Apache License, Version 2.0 (the "License"); 52a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio * you may not use this file except in compliance with the License. 62a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio * You may obtain a copy of the License at 72a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio * 82a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio * http://www.apache.org/licenses/LICENSE-2.0 92a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio * 102a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio * Unless required by applicable law or agreed to in writing, software 112a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio * distributed under the License is distributed on an "AS IS" BASIS, 122a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio * See the License for the specific language governing permissions and 142a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio * limitations under the License. 152a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio */ 162a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio 172a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Megliopackage com.android.bidi; 182a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio 192a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglioimport android.app.Fragment; 202a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglioimport android.content.Context; 212a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglioimport android.os.Bundle; 222a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglioimport android.view.LayoutInflater; 232a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglioimport android.view.View; 242a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglioimport android.view.ViewGroup; 25a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport android.widget.Button; 26a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport android.widget.EditText; 27a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport android.widget.FrameLayout; 280d2bda319d4d66d8fc840b043d3aacee9a8414dbFabrice Di Meglioimport android.widget.GridLayout; 29a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport android.widget.Space; 30a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport android.widget.TextView; 312a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio 32a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport static android.text.InputType.TYPE_CLASS_TEXT; 33a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport static android.text.InputType.TYPE_TEXT_VARIATION_EMAIL_ADDRESS; 34a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport static android.text.InputType.TYPE_TEXT_VARIATION_PASSWORD; 35a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport static android.widget.GridLayout.ALIGN_BOUNDS; 36a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport static android.widget.GridLayout.BASELINE; 37a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport static android.widget.GridLayout.CENTER; 38a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport static android.widget.GridLayout.FILL; 39a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport static android.widget.GridLayout.LEFT; 40a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport static android.widget.GridLayout.RIGHT; 41a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport static android.widget.GridLayout.START; 42a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport static android.widget.GridLayout.Spec; 43a7726271f756dfc6f2ff3bb10fc4167e750fb606Tor Norbyeimport static android.widget.GridLayout.spec; 442a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio 452a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Megliopublic class BiDiTestGridLayoutCodeRtl extends Fragment { 462a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio 472a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio private FrameLayout currentView; 482a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio 492a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio @Override 502a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio public View onCreateView(LayoutInflater inflater, ViewGroup container, 512a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Bundle savedInstanceState) { 522a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio currentView = (FrameLayout) inflater.inflate(R.layout.grid_layout_code, container, false); 532a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio return currentView; 542a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio } 552a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio 562a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio @Override 572a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio public void onViewCreated(View view, Bundle savedInstanceState) { 582a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio super.onViewCreated(view, savedInstanceState); 592a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio currentView.addView(create(currentView.getContext())); 602a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio } 612a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio 622a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio public static View create(Context context) { 632a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio GridLayout layout = new GridLayout(context); 642a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio layout.setUseDefaultMargins(true); 652a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio layout.setAlignmentMode(ALIGN_BOUNDS); 662a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio layout.setRowOrderPreserved(false); 672a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio layout.setLayoutDirection(View.LAYOUT_DIRECTION_RTL); 682a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio 692a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Spec row1 = spec(0); 702a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Spec row2 = spec(1); 712a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Spec row3 = spec(2, BASELINE); 722a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Spec row4 = spec(3, BASELINE); 732a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Spec row5 = spec(2, 3, FILL); // allow the last two rows to overlap the middle two 742a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Spec row6 = spec(5); 752a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Spec row7 = spec(6); 762a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio 772a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Spec col1a = spec(0, 4, CENTER); 780d2bda319d4d66d8fc840b043d3aacee9a8414dbFabrice Di Meglio Spec col1b = spec(0, 4, LEFT); 790d2bda319d4d66d8fc840b043d3aacee9a8414dbFabrice Di Meglio Spec col1c = spec(0, RIGHT); 802a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Spec col2 = spec(1, START); 812a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Spec col3 = spec(2, FILL); 822a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Spec col4a = spec(3); 832a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Spec col4b = spec(3, FILL); 842a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio 852a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio { 862a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio TextView c = new TextView(context); 872a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio c.setTextSize(32); 882a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio c.setText("Email setup"); 892a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio layout.addView(c, new GridLayout.LayoutParams(row1, col1a)); 902a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio } 912a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio { 922a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio TextView c = new TextView(context); 932a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio c.setTextSize(16); 942a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio c.setText("You can configure email in just a few steps:"); 952a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio layout.addView(c, new GridLayout.LayoutParams(row2, col1b)); 962a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio } 972a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio { 982a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio TextView c = new TextView(context); 992a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio c.setText("Email address:"); 1002a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio layout.addView(c, new GridLayout.LayoutParams(row3, col1c)); 1012a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio } 1022a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio { 1032a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio EditText c = new EditText(context); 1042a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio c.setEms(10); 1052a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio c.setInputType(TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_EMAIL_ADDRESS); 1062a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio layout.addView(c, new GridLayout.LayoutParams(row3, col2)); 1072a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio } 1082a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio { 1092a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio TextView c = new TextView(context); 1102a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio c.setText("Password:"); 1112a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio layout.addView(c, new GridLayout.LayoutParams(row4, col1c)); 1122a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio } 1132a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio { 1142a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio TextView c = new EditText(context); 1152a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio c.setEms(8); 1162a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio c.setInputType(TYPE_CLASS_TEXT | TYPE_TEXT_VARIATION_PASSWORD); 1172a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio layout.addView(c, new GridLayout.LayoutParams(row4, col2)); 1182a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio } 1192a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio { 1202a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Space c = new Space(context); 1212a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio layout.addView(c, new GridLayout.LayoutParams(row5, col3)); 1222a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio } 1232a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio { 1242a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Button c = new Button(context); 1252a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio c.setText("Manual setup"); 1262a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio layout.addView(c, new GridLayout.LayoutParams(row6, col4a)); 1272a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio } 1282a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio { 1292a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio Button c = new Button(context); 1302a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio c.setText("Next"); 1312a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio layout.addView(c, new GridLayout.LayoutParams(row7, col4b)); 1322a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio } 1332a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio 1342a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio return layout; 1352a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio } 1362a7e7a08d9843d5386b2d245c096cbc1ce203e35Fabrice Di Meglio} 137