1a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka/* 2a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka * Copyright (C) 2011 The Android Open Source Project 3a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka * 4a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka * Licensed under the Apache License, Version 2.0 (the "License"); 5a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka * you may not use this file except in compliance with the License. 6a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka * You may obtain a copy of the License at 7a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka * 8a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka * http://www.apache.org/licenses/LICENSE-2.0 9a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka * 10a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka * Unless required by applicable law or agreed to in writing, software 11a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka * distributed under the License is distributed on an "AS IS" BASIS, 12a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka * See the License for the specific language governing permissions and 14a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka * limitations under the License. 15a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka */ 16a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka 17c8461d1ae26d43a09c0f835d833f3d49fbe8d2f3Tadashi G. Takaokapackage com.android.inputmethod.keyboard; 18a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka 192442e779857e7eda253aadcb1c4dff5ccb3e53f4Tadashi G. Takaokaimport android.view.View; 20a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaokaimport android.view.ViewGroup; 21a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaokaimport android.view.ViewGroup.MarginLayoutParams; 22a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaokaimport android.widget.FrameLayout; 23a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaokaimport android.widget.RelativeLayout; 24a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka 251e11c44d1b5f9ddf593c5407cb14c458be0056f2Tadashi G. Takaokapublic final class ViewLayoutUtils { 26c8461d1ae26d43a09c0f835d833f3d49fbe8d2f3Tadashi G. Takaoka private ViewLayoutUtils() { 27c8461d1ae26d43a09c0f835d833f3d49fbe8d2f3Tadashi G. Takaoka // This utility class is not publicly instantiable. 28a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka } 29a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka 30a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka public static MarginLayoutParams newLayoutParam(ViewGroup placer, int width, int height) { 31a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka if (placer instanceof FrameLayout) { 32a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka return new FrameLayout.LayoutParams(width, height); 33a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka } else if (placer instanceof RelativeLayout) { 34a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka return new RelativeLayout.LayoutParams(width, height); 35a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka } else if (placer == null) { 36a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka throw new NullPointerException("placer is null"); 37a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka } else { 38a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka throw new IllegalArgumentException("placer is neither FrameLayout nor RelativeLayout: " 39a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka + placer.getClass().getName()); 40a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka } 41a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka } 422442e779857e7eda253aadcb1c4dff5ccb3e53f4Tadashi G. Takaoka 432442e779857e7eda253aadcb1c4dff5ccb3e53f4Tadashi G. Takaoka public static void placeViewAt(View view, int x, int y, int w, int h) { 442442e779857e7eda253aadcb1c4dff5ccb3e53f4Tadashi G. Takaoka final ViewGroup.LayoutParams lp = view.getLayoutParams(); 452442e779857e7eda253aadcb1c4dff5ccb3e53f4Tadashi G. Takaoka if (lp instanceof MarginLayoutParams) { 462442e779857e7eda253aadcb1c4dff5ccb3e53f4Tadashi G. Takaoka final MarginLayoutParams marginLayoutParams = (MarginLayoutParams)lp; 472442e779857e7eda253aadcb1c4dff5ccb3e53f4Tadashi G. Takaoka marginLayoutParams.width = w; 482442e779857e7eda253aadcb1c4dff5ccb3e53f4Tadashi G. Takaoka marginLayoutParams.height = h; 492442e779857e7eda253aadcb1c4dff5ccb3e53f4Tadashi G. Takaoka marginLayoutParams.setMargins(x, y, 0, 0); 502442e779857e7eda253aadcb1c4dff5ccb3e53f4Tadashi G. Takaoka } 512442e779857e7eda253aadcb1c4dff5ccb3e53f4Tadashi G. Takaoka } 52a7eed902f1b0d6871d416412b3c6f91163fa2578Tadashi G. Takaoka} 53