• 背景
  • 代码实现
  • 注意的地方
    • A little bit of progress every dayCome on

背景

最近需要画方格图,我用的是自定义的view,但是缩放实现不了,于是采用按钮的方式来动态改变view的大小。

代码实现

首先我的xml布局代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"tools:context="com.example.pc_2.viewsizechangedemo.MainActivity"><RelativeLayout
        android:layout_width="match_parent"android:layout_height="match_parent"><TextView
            android:id="@+id/tv_size_change"android:layout_centerInParent="true"android:gravity="center"android:background="@android:color/darker_gray"android:textColor="@android:color/white"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello World!"/><Button
            android:id="@+id/btn_change_size"android:textSize="12sp"android:text="点击改变大小"android:textColor="@android:color/white"android:layout_centerHorizontal="true"android:layout_alignParentBottom="true"android:layout_width="wrap_content"android:layout_height="wrap_content" /></RelativeLayout></LinearLayout>

xml布局显示如下:

然后MainActivity的代码如下:
package com.example.pc_2.viewsizechangedemo;import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import android.widget.TextView;public class MainActivity extends Activity {private Button btn_change_size;private TextView tv_size_change;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 设置该activity使用的布局文件setViews();// 控件初始化setListener();// 设置监听}private void setListener() {btn_change_size.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 获取要改变view的父布局的布局参数RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) tv_size_change.getLayoutParams();// 设置宽为100dpparams.width = DensityUtil.dp2px(MainActivity.this, 100);// 设置高为100dpparams.height = DensityUtil.dp2px(MainActivity.this, 100);// 根据布局参数的设置,重新设置view(这里用了text view,当然其他的view也是通用的)的大小tv_size_change.setLayoutParams(params);}});}private void setViews() {btn_change_size = (Button) findViewById(R.id.btn_change_size);tv_size_change = (TextView) findViewById(R.id.tv_size_change);}}

最后两张对比图显示如下:

好的,成功改变了大小!


注意的地方

需要注意下面这个方法:
// 获取要改变view的父布局的布局参数RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) tv_size_change.getLayoutParams();

这里布局参数为什么是RelativeLayout.LayoutParams对象呢?是因为该textview的父布局是RelativeLayout。因此以此类推,当view的父布局是Linearlayout的时候,就要采用Linearlayout.LayoutParams对象。到这里就讲完了,谢谢大家!

================================================================

A little bit of progress every day!Come on!

代码动态改变view的大小相关推荐

  1. 如何动态改变框架的大小[转]

    如何动态改变框架的大小 解决思路: 在框架所加载页中用parent.frames["框架名"].cols="值1,值2..." 或者parent.frames[ ...

  2. 微信小程序view动态长度_微信小程序实现动态改变view标签宽度和高度的方法【附demo源码下载】...

    本文实例讲述了微信小程序实现动态改变view标签宽度和高度的方法.分享给大家供大家参考,具体如下: 1.效果展示 2.关键代码 index.wxml文件 >我是view标签,我现在的宽度是{{v ...

  3. 【微信小程序教程】动态改变view标签的宽度和高度

    1.效果展示 2.关键代码 wxml文件 js文件 3.源代码获取方式 百度云链接:http://pan.baidu.com/s/1eSsma9G 4.在动态改变view标签的宽度和高度的过程中有遇到 ...

  4. 如何动态改变框架的大小

    如何动态改变框架的大小 解决思路: 在框架所加载页中用parent.frames["框架名"].cols="值1,值2..." 或者parent.frames[ ...

  5. Android 根据坐标点动态改变View的位置

    在开发项目中,需要动态改变View的位置,其实只需要用api的 layout()方法即可,不断改变坐标值,通过onTouchEvent()来获取点的坐标点,然后计算出View的宽和高就可以了 代码如下 ...

  6. jQuery动态改变图片显示大小(修改)

    当我们要显示后台传过来若干个尺寸不一的图片时,为了保证图片大小的一致性及比例的协调,需要动态改变图片显示尺寸.通过搜索,我们可以从网上找到实现此功能的jQuery代码如下.这段代码可以使图片的大小保持 ...

  7. 如何动态获得view的大小

    说到获取view的大小,一般想到使用View中的getWidht和getHeight,getMeasuredWidth和getMeasuredHeight.但是这几个方法一般都是在view的onlay ...

  8. 代码动态改变 NGUI UILabel 的字体

    有一次因为 ttf 分成简体和繁体两个..所以就需要动态改变NGUI 中 UILabel 的字体,但是不知道 UILabel 保存字体的字段是哪个 网上搜到..在这里记录一下 1 using Unit ...

  9. Unity中用代码动态改变材质球贴图

    首先先把贴图放在Resources文件夹下,或者新建一个文件夹,便于管理. 并命好名,方便遍历. 创建脚本,挂在要动态改变的物体上. using System.Collections; using S ...

  10. mpvue微信小程序中使用svg图标,并通过代码动态改变图标颜色

    微信小程序,mpvue中使用svg图标,并通过代码改变图标颜色 本文主要是mpvue开发小程序的代码,不过微信小程序原生开发应该也是一样的,思路都是通用的,按照这个思路微信小程序原生开发一样可以实现同 ...

最新文章

  1. Django REST framework API 指南(12):验证器
  2. (11)调用门提权(有参)
  3. 【转】numpy-array自带的迭代器-----np.nditer
  4. 关于softmax loss这个概念
  5. 华为云云容器快速搭建网站实践随记—利用公有镜像搭建WordPress
  6. java部署到服务器乱码_java web项目发布到linux服务器上运行出现乱码
  7. SQL-92标准 中文翻译——概念(位字符串)
  8. [Asp.net]Uploadify上传大文件,Http error 404 解决方案 - wolfy
  9. screen的一些常用命令和快捷键
  10. 机器学习基础知识(一):机器学习三大流派
  11. 2015年全国大学生电子设计竞赛A题(双向DC-DC变换器)训练总结(硬件部分)
  12. 怎么管理员工混工时的现象?
  13. linux终端 快捷键
  14. vrep_Nao控制_学习记录
  15. supervise用法_supervise过去式和用法例句
  16. C语言 摄氏度与华氏度转换
  17. python 以图搜图1688_以图搜图(一):python aHash算法
  18. 斐讯w2换表盘_斐讯W2智能手表初体验:路由不要钱!手表也白送!
  19. 网站服务器 网络速度测试,服务器访问速度怎么测试?
  20. java中怎么给redis缓存设置失效时间

热门文章

  1. font在html语言中是什么意思,font标签什么意思
  2. ML语言/函数式编程原理(一)
  3. MediaRecorder单独录制影像,不录制音频
  4. Team Foundation Server BuilderService LOG
  5. 数据库中的二维表—巧借Excel
  6. 高通CSRA6640单芯片DDFA放大器解决方案
  7. oracle文本类型字段,Oracle字符的5种类型的介绍
  8. Java8通过Function获取字段名(获取实体类的字段名称)
  9. 使用NS流程图解析排序算法(1) 快速排序递归算法说明
  10. MySQL学习笔记[学习资料来源于B站黑马测试]