在Android中有时候我们需要动态改变控件的大小。有几种办法可以实现

 一是在onMeasure中修改尺寸,二是在onLayout中修改位置和尺寸。这个是可以进行位置修改的,onMeasure不行。
还有一种是用LayoutParams来进行修改。前两种方法都需要你自定义控件,重载相关函数。二最后一种不需要重载。
今天,我要说的就是最后一种方法。先上代码:

        private void zoomInViewSize()
    {
        View img1 = findViewById(R.id.ImageView02);
        ViewGroup.LayoutParams  lp = img1.getLayoutParams();
        lp.width *=2;
        lp.height *=2; 
        img1.setLayoutParams(lp);

}


这是说把View的大小该为原来的大小的两倍大小。刚刚开始的时候,我测试不成功,其原因在于我的View的大小在布局文件中是
wrap_content的,这样,乘以2就没有效果了。有两种办法,一是在布局中将View的大小设置为一个固定尺寸。第二种是在这里
我们的lp.width和lp.height设置一个固定尺寸。不要再原来的基础上进行乘法和除法。但是你可以进行减法或加法的操作。
像这个样子:
        lp.width +=100;

lp.height +=100;


下面附上代码:
public class MainActivity extends Activity {
    protected static final String TAG = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    public void onClickZoomIn(View V)
    {
        zoomInViewSize();
        
    }
    
    public void onClickZoomOut(View V)
    {
        zoomOutViewSize();
        
    }
    
    private void zoomInViewSize()
    {
        View img1 = findViewById(R.id.ImageView01);
        ViewGroup.LayoutParams  lp = img1.getLayoutParams();
        lp.width *=2;
        lp.height *=2; 
        img1.setLayoutParams(lp);
    }
    
    //xiao
    private void zoomOutViewSize()
    {
        View img1 = findViewById(R.id.ImageView01);
        ViewGroup.LayoutParams  lp = img1.getLayoutParams();
        lp.width /=2;
        lp.height /=2; 
        
        img1.setLayoutParams(lp);
    }
}


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >
    <ImageView
        android:id="@+id/ImageView01"
        android:layout_width="80dp"
        android:layout_height="100dp"
        android:layout_alignParentLeft="true"
        android:layout_alignTop="@+id/imageView1"
        android:src="@drawable/ic_launcher" />
    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/ImageView01"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="47dp"
        android:layout_marginLeft="14dp"
        android:onClick="onClickZoomIn"
        android:text="ZoomIn" />
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/button1"
        android:layout_alignBottom="@+id/button1"
        android:layout_toRightOf="@+id/imageView1"
        android:onClick="onClickZoomOut"
        android:text="ZoomOut" />

</RelativeLayout>




Android中动态改变控件的大小的一种方法的更多相关文章

  1. WPF 中动态改变控件模板

    在某些项目中,可能需要动态的改变控件的模板,例如软件中可以选择不同的主题,在不同的主题下软件界面.控件的样式都会有所不同,这时即可通过改变控件模板的方式实现期望的功能. 基本方法是当用户点击切换主题按 ...

  2. Android之动态改变控件大小

    利用getLayoutParams()方法和setLayoutParams()方法.三步曲:1.首先利用getLayoutParams()方法,获取控件的LayoutParams.eg:LayoutP ...

  3. WPF中动态改变控件显示位置

    转自 http://blog.csdn.net/lassewang/article/details/6928897 测试环境: Windows XP/Windows 7 开发环境: Microsoft ...

  4. ios 运行时特征,动态改变控件字体大小

    需求:ex: 在不同尺寸的iPhone上面显示的字体大小不一样 https://github.com/rentzsch/jrswizzle #import <UIKit/UIKit.h> ...

  5. android 动态改变控件位置和大小 .

    动态改变控件位置的方法: setPadding()的方法更改布局位置. 如我要把Imageview下移200px:             ImageView.setPadding( ImageVie ...

  6. Android 在布局容器中动态添加控件

    这里,通过一个小demo,就可以掌握在布局容器中动态添加控件,以动态添加Button控件为例,添加其他控件同样道理. 1.addView 添加控件到布局容器 2.removeView 在布局容器中删掉 ...

  7. MFC中改变控件的大小和位置

    用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置. void MoveWindow(int x,int y,int nWidth,int nHeight ...

  8. MFC中改变控件的大小和位置(zz)

    用CWnd类的函数MoveWindow()或SetWindowPos()能够改变控件的大小和位置. void MoveWindow(int x,int y,int nWidth,int nHeight ...

  9. VC中动态添加控件

    VC中动态添加控件 动态控件是指在需要时由Create()创建的控件,这与预先在对话框中放置的控件是不同的. 一.创建动态控件: 为了对照,我们先来看一下静态控件的创建. 放置静态控件时必须先建立一个 ...

随机推荐

  1. 扒一扒IT大佬高考:马云数学1分考北大 李彦宏是状元

    http://news.cnblogs.com/n/522622/ 高考今天正式拉开序幕,而像李彦宏.马云等 IT 大佬之前也都参加过高考,他们成绩又都是怎样的呢? 马化腾:放弃天文梦选择计算机 20 ...

  2. Vue风格指南总结及对应ESLint规则配置

    全手打原创,转载请标明出处:https://www.cnblogs.com/dreamsqin/p/10906951.html,多谢,=.=~ 必要的:规避错误: 强烈推荐:改善可读性和开发体验: 推 ...

  3. 洛谷 P3387 【模板】缩点

    题目背景 缩点+DP 题目描述 给定一个n个点m条边有向图,每个点有一个权值,求一条路径,使路径经过的点权值之和最大.你只需要求出这个权值和. 允许多次经过一条边或者一个点,但是,重复经过的点,权值只 ...

  4. 打开某exe提示"应用程序无法启动,因为应用程序的并行配置不正确……"的解决方案

    本人在新安装好了的windows server 2008 r2 (64位)上运行“RefilesName V2.0(文件批量改名).exe”,结果提示: 应用程序无法启动,因为应用程序的并行配置不正确 ...

  5. Java变量、Java对象初始化顺序

    局部变量与成员变量: 局部变量分为: 行参:在方法签名中定义的局部变量,随方法的结束而凋亡. 方法内的局部变量:必须在方法内对其显示初始化,从初始化后开始生效,随方法的结束而凋亡. 代码块内的局部变量 ...

  6. Django 模板函数

    Django 模板函数 在模板中的函数是只需要函数名,不用加括号,自动执行 在前端中的函数 不用加括号,函数自动执行 前端 {% for item in userinfo.keys %} <h3 ...

  7. SQL 隔离级别

    在SQL标准中定义了四种隔离级别,每一种级别都规定了一个事务中所做的修改,哪些在事务内和事务间是可见的,哪些是不可见的.较低级别的隔离通常可以执行更高的并发,系统的开销也更低. 简单的介绍四种隔离级别 ...

  8. setTimeout,clearTimeout的一些好用法

    if(hidden != 1){ $.ui.showMask(); var _aaa = setTimeout(function(){ $.ui.hideMask(); },5000); } //be ...

  9. AutoLayout处理UITableView动态高度

    我们经常会遇到UITableViewCell的高度要跟随内容而调整,在未引入AutoLayout之前,我们使用以下方法计算Label高度,然后heightForRowAtIndexPath中返回计算的 ...

  10. [LOJ] #2360. 「NOIP2016」换教室

    期望DP #include<iostream> #include<cstring> #include<cstdio> #include<cctype> ...