原文:http://tryenough.com/android-layoutparams

LayoutParams是什么?

LayoutParams是View用来告诉它的父控件如何放置自己的,LayoutParams是ViewGroup类里的一个静态内部类。

ViewGroup.LayoutParams仅仅描述了这个View想要的宽度和高度。可以理解成LayoutParams是子View告诉父View自身宽高的桥梁。

可取的值:

  • fill_parent 强制性使子视图的大小扩展至与父视图大小相等(不含 padding )
  • match_parent 与fill_parent相同,用于Android 2.3 & 之后版本
  • wrap_content 自适应大小,强制性地使视图扩展以便显示其全部内容(含 padding )

不同ViewGroup的继承类对应着不同的ViewGroup.LayoutParams的子类,例如:ViewGroup.MarginLayoutParams, WindowManager.LayoutParams等。

原文:http://tryenough.com/android-layoutparams

实际使用的一个例子

Activity:

public class MoveActivity extends AppCompatActivity {private ImageView mIv;private TextView mTvBlue;private TextView mTvGreen;private ViewGroup.LayoutParams mVgLp;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_move);mIv = (ImageView) findViewById(R.id.mIv);mTvBlue = (TextView) findViewById(R.id.mTvBlue);mTvGreen = (TextView) findViewById(R.id.mTvGreen);mVgLp = mIv.getLayoutParams();findViewById(R.id.mTvMoveRight).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {ViewGroup.LayoutParams vg_lp = mIv.getLayoutParams();// RelativeLayout.LayoutParams 不可抽取为成员变量RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(vg_lp);params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, R.id.mIv);mIv.setLayoutParams(params); //使layout更新}});findViewById(R.id.mTvMoveLeft).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// 左 (默认处于顶部,所以看起来是左上)RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(mVgLp);params.addRule(RelativeLayout.ALIGN_PARENT_LEFT);mIv.setLayoutParams(params);}});findViewById(R.id.mTvCenter).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// 居中RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(mVgLp);params.addRule(RelativeLayout.CENTER_IN_PARENT);mIv.setLayoutParams(params);}});findViewById(R.id.mTvLeftVer).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// 左部垂直居中RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(mVgLp);params.addRule(RelativeLayout.ALIGN_PARENT_LEFT|RelativeLayout.CENTER_VERTICAL);mIv.setLayoutParams(params);}});findViewById(R.id.mTvRightBot).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {// 右下RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(mVgLp);params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);mIv.setLayoutParams(params);}});//  绿在蓝右边findViewById(R.id.mTvaGRightB).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {ViewGroup.LayoutParams vgLp = mTvGreen.getLayoutParams();RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(vgLp);params.addRule(RelativeLayout.RIGHT_OF,R.id.mTvBlue);mTvGreen.setLayoutParams(params);}});// 绿在蓝下边findViewById(R.id.mTvGElowB).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View view) {ViewGroup.LayoutParams vgLp = mTvGreen.getLayoutParams();RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(vgLp);params.addRule(RelativeLayout.BELOW,R.id.mTvBlue);mTvGreen.setLayoutParams(params);}});}
}
复制代码

布局xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayoutandroid:id="@+id/activity_main"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"android:orientation="vertical"tools:context="com.amqr.movetest.MoveActivity"><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/mTvMoveLeft"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#6600ff00"android:padding="10dp"android:layout_margin="10dp"android:text="黑色最左!!"/><TextViewandroid:id="@+id/mTvMoveRight"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="10dp"android:background="#6600ff00"android:layout_margin="10dp"android:text="黑色最右!!"/><TextViewandroid:id="@+id/mTvCenter"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#6600ff00"android:padding="10dp"android:layout_margin="10dp"android:text="黑色居中"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/mTvLeftVer"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="10dp"android:background="#6600ff00"android:layout_margin="10dp"android:text="黑色靠左垂直居中"/><TextViewandroid:id="@+id/mTvRightBot"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#6600ff00"android:padding="10dp"android:layout_margin="10dp"android:text="黑色右下角"/></LinearLayout><LinearLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:orientation="horizontal"><TextViewandroid:id="@+id/mTvaGRightB"android:layout_width="wrap_content"android:layout_height="wrap_content"android:padding="10dp"android:background="#6600ff00"android:layout_margin="10dp"android:text="绿在蓝右边"/><TextViewandroid:id="@+id/mTvGElowB"android:layout_width="wrap_content"android:layout_height="wrap_content"android:background="#6600ff00"android:padding="10dp"android:layout_margin="10dp"android:text="绿在蓝下边"/></LinearLayout><RelativeLayoutandroid:layout_width="match_parent"android:layout_height="200px"android:background="#66ff0000"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="RelativeLayout"android:layout_centerInParent="true"/><ImageViewandroid:id="@+id/mIv"android:layout_width="30dp"android:layout_height="40px"android:background="#000"android:layout_centerHorizontal="true"/><TextViewandroid:id="@+id/mTvBlue"android:layout_width="20dp"android:layout_height="20dp"android:text="蓝"android:gravity="center"android:background="#660000ff"/><TextViewandroid:id="@+id/mTvGreen"android:layout_width="20dp"android:layout_height="20dp"android:text="绿"android:gravity="center"android:background="#6600ff00"android:layout_below="@id/mTvBlue"/></RelativeLayout>
</LinearLayout>
复制代码

转载于:https://juejin.im/post/5c7fc5d05188251bbf2ed2b0

Android-LayoutParams的那些事相关推荐

  1. Android预优化那些事

    https://blog.csdn.net/myfriend0/article/details/54970455 Android预优化那些事 Preopt ART Dalvik APK的预优化原理和作 ...

  2. 不可不知的 Android strings.xml 那些事

    不可不知的 Android strings.xml 那些事 相信 strings.xml 已经是大家在 Android 开发中最熟悉的文件之一了,但其实它也有很多需要注意的地方和一些小技巧,知道了这些 ...

  3. Android 说说Bitmap那些事

    Android 说说Bitmap那些事 前言 Bitmap存储格式 Bitmap内存计算方法 图片文件存储格式 图片压缩方法 RGB_565压缩 质量压缩 尺寸压缩(缩放压缩) 采样率压缩 微信分享问 ...

  4. 糗事百科 android源码,Android高仿糗事百科(含服务端)

    Android高仿糗事百科(含服务端) 积分: 23 智慧币 积分: 3 智慧币 [1.00元 ] 包含内容: 源码,全套工具 详情描述 如遇视频不清晰,请最大化观看演示 以下仅列出部分功能,全部功能 ...

  5. [Android开发那点破事]解决android.os.NetworkOnMainThreadException

    昨天和女朋友换了手机,我的iPhone 4S 换了她得三星I9003.第一感觉就是好卡,果断刷机.以前是Android 2.3的系统.回来刷成了4.4. 好了,问题来了.在我用手机测试我们的APP的时 ...

  6. 【Android开发那点破事】打开APP加载页面实现

    今天的破事呢就说说APP加载页面的实现.一般情况下,当APP打开的时候,我们需要做很多事情,比如检查网络连接啊,初始化一些配置啊等等.我们可以让这些事情在APP完全打开之前做完,然后呢在打开的过程中显 ...

  7. 【Android开发那点破事】解决android.os.NetworkOnMainThreadException

    昨天和女朋友换了手机,我的iPhone 4S 换了她得三星I9003.第一感觉就是好卡,果断刷机.以前是Android 2.3的系统.回来刷成了4.4. 好了,问题来了.在我用手机测试我们的APP的时 ...

  8. 自定义控件知识储备-LayoutParams的那些事

    在上一篇文章里,我总结了一下自定义控件需要了解的基础知识:View的绘制流程--<自定义控件知识储备-View的绘制流程>.其中,在View的测量流程里,View的测量宽高是由父控件的Me ...

  9. Android桌面快捷方式那些事与那些坑

    原文来自http://blog.zanlabs.com/2015/03/14/android-shortcut-summary/ 将近二个多月没写博客了. 之前一段时间一直在搞红包助手,就没抽时间写博 ...

  10. Android LayoutParams源码分析

    文章目录 LayoutParams源码分析 概述 LayoutParams基本用法 LayoutParams源码分析 LayoutParams源码分析 概述 LayoutParams是布局参数的意思, ...

最新文章

  1. jQuery通过ajax方法获取json数据不执行success的原因及解决方法
  2. Linux 小知识翻译 - 「架构」(arch)
  3. Android WebView缓存策略详解
  4. linux 格式化磁盘数据恢复_电脑文档被格式化,怎么恢复格式化文档!
  5. package org.apache.hadoop.conf does not exist解决
  6. 给定4个数字组合的C语言算法,leetcode 454. 四数相加 II c语言
  7. Linux如何建立用户(组)及调整用户(组)属性(案列+详细指令)
  8. 华为手机明年全面升级鸿蒙OS:其实两年前就能用
  9. Google 元素定制 T 恤
  10. Wordpress 5.2 beta 2 发布,支持 Emoji 12
  11. 动态规划之背包问题(优化版)
  12. android模拟器上https抓包
  13. 拼音输入法技巧-智能ABC
  14. 52单片机四种方法实现流水灯
  15. Python利用Matplotlib绘图无法显示中文字体的解决方案
  16. 类似PS的蒙版?可以实现,LVGL『Object mask对象蒙版控件』介绍
  17. Unirech:阿里云国际云服务器ecs建站流程
  18. bootstrap网格布局自适应问题
  19. 网上计算机能力提升研修心得,信息技术应用能力提升个人研修总结
  20. ILSpy中baml转化为xaml的改进(四)

热门文章

  1. Android RecyclerView之PagerSnapHelper原理解析(二)
  2. Android的JNI【实战教程】6⃣️--温控计
  3. 吐血干货,直播首屏耗时400ms以下的优化实践
  4. FFmpeg总结(七)AV系列结构体之AVIOContext
  5. 勤能补拙 VS 思考补拙
  6. 新型超级生物计算机简介,自然形成的超级生物计算机
  7. matlab中怎样提取结构体下的数据库,MATLAB如何提取结构体中数据
  8. updatepanel失效怎么办_[转]jquery与updatepanel二次失效问题解决方案-阿里云开发者社区...
  9. apt get 安装mysql5.7_ubuntu16.04下apt-get安装mysql5.7,文件目录结构
  10. 用JAVA打出的计算机_如何用Java代码操作计算机文件?