Android examples for User Interface:View Child
scale View And Children
/*// w w w. j a va 2 s . c om * The MIT License (MIT) * * Copyright ? 2013 Clover Studio Ltd. All rights reserved. * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ //package com.java2s; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; public class Main { public static void scaleViewAndChildren(View root, float scale) { // Retrieve the view's layout information ViewGroup.LayoutParams layoutParams = root.getLayoutParams(); // Scale the view itself if (layoutParams.width > 0) { layoutParams.width *= scale; } if (layoutParams.height > 0) { layoutParams.height *= scale; } // If this view has margins, scale those too if (layoutParams instanceof ViewGroup.MarginLayoutParams) { ViewGroup.MarginLayoutParams marginParams = (ViewGroup.MarginLayoutParams) layoutParams; marginParams.leftMargin *= scale; marginParams.rightMargin *= scale; marginParams.topMargin *= scale; marginParams.bottomMargin *= scale; } // Set the layout information back into the view root.setLayoutParams(layoutParams); // Scale the view's padding root.setPadding((int) (root.getPaddingLeft() * scale), (int) (root.getPaddingTop() * scale), (int) (root.getPaddingRight() * scale), (int) (root.getPaddingBottom() * scale)); // If the root view is a TextView, scale the size of its text if (root instanceof TextView) { TextView textView = (TextView) root; textView.setTextSize(textView.getTextSize() * scale); } // If the root view is a ViewGroup, scale all of its children // recursively if (root instanceof ViewGroup) { ViewGroup groupView = (ViewGroup) root; for (int cnt = 0; cnt < groupView.getChildCount(); ++cnt) scaleViewAndChildren(groupView.getChildAt(cnt), scale); } } }