1 /* 2 * Copyright (C) 2007 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 android.widget.focus; 18 19 import android.app.Activity; 20 import android.widget.LinearLayout; 21 import android.widget.Button; 22 import android.widget.TextView; 23 import android.os.Bundle; 24 import android.view.ViewGroup; 25 import android.content.Context; 26 27 public class HorizontalFocusSearch extends Activity { 28 29 private LinearLayout mLayout; 30 31 private Button mLeftTall; 32 private Button mMidShort1Top; 33 private Button mMidShort2Bottom; 34 private Button mRightTall; 35 36 getLayout()37 public LinearLayout getLayout() { 38 return mLayout; 39 } 40 getLeftTall()41 public Button getLeftTall() { 42 return mLeftTall; 43 } 44 getMidShort1Top()45 public Button getMidShort1Top() { 46 return mMidShort1Top; 47 } 48 getMidShort2Bottom()49 public Button getMidShort2Bottom() { 50 return mMidShort2Bottom; 51 } 52 getRightTall()53 public Button getRightTall() { 54 return mRightTall; 55 } 56 57 @Override onCreate(Bundle icicle)58 protected void onCreate(Bundle icicle) { 59 super.onCreate(icicle); 60 61 mLayout = new LinearLayout(this); 62 mLayout.setOrientation(LinearLayout.HORIZONTAL); 63 mLayout.setLayoutParams(new ViewGroup.LayoutParams( 64 ViewGroup.LayoutParams.MATCH_PARENT, 65 ViewGroup.LayoutParams.MATCH_PARENT)); 66 67 mLeftTall = makeTall("left tall"); 68 mLayout.addView(mLeftTall); 69 70 mMidShort1Top = addShort(mLayout, "mid(1) top", false); 71 mMidShort2Bottom = addShort(mLayout, "mid(2) bottom", true); 72 73 mRightTall = makeTall("right tall"); 74 mLayout.addView(mRightTall); 75 76 setContentView(mLayout); 77 } 78 79 // just to get toString non-sucky 80 private static class MyButton extends Button { 81 MyButton(Context context)82 public MyButton(Context context) { 83 super(context); 84 } 85 86 87 @Override toString()88 public String toString() { 89 return getText().toString(); 90 } 91 } 92 makeTall(String label)93 private Button makeTall(String label) { 94 Button button = new MyButton(this); 95 button.setText(label); 96 button.setLayoutParams(new LinearLayout.LayoutParams( 97 ViewGroup.LayoutParams.WRAP_CONTENT, 98 ViewGroup.LayoutParams.MATCH_PARENT)); 99 return button; 100 } 101 addShort(LinearLayout root, String label, boolean atBottom)102 private Button addShort(LinearLayout root, String label, boolean atBottom) { 103 Button button = new MyButton(this); 104 button.setText(label); 105 button.setLayoutParams(new LinearLayout.LayoutParams( 106 ViewGroup.LayoutParams.WRAP_CONTENT, 107 0, // height 108 490)); 109 110 TextView filler = new TextView(this); 111 filler.setText("filler"); 112 filler.setLayoutParams(new LinearLayout.LayoutParams( 113 ViewGroup.LayoutParams.WRAP_CONTENT, 114 0, // height 115 510)); 116 117 LinearLayout ll = new LinearLayout(this); 118 ll.setOrientation(LinearLayout.VERTICAL); 119 ll.setLayoutParams(new LinearLayout.LayoutParams( 120 ViewGroup.LayoutParams.WRAP_CONTENT, 121 ViewGroup.LayoutParams.MATCH_PARENT)); 122 123 if (atBottom) { 124 ll.addView(filler); 125 ll.addView(button); 126 root.addView(ll); 127 } else { 128 ll.addView(button); 129 ll.addView(filler); 130 root.addView(ll); 131 } 132 return button; 133 } 134 } 135