Android-LayoutParams的那些事
原文: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的那些事相关推荐
- Android预优化那些事
https://blog.csdn.net/myfriend0/article/details/54970455 Android预优化那些事 Preopt ART Dalvik APK的预优化原理和作 ...
- 不可不知的 Android strings.xml 那些事
不可不知的 Android strings.xml 那些事 相信 strings.xml 已经是大家在 Android 开发中最熟悉的文件之一了,但其实它也有很多需要注意的地方和一些小技巧,知道了这些 ...
- Android 说说Bitmap那些事
Android 说说Bitmap那些事 前言 Bitmap存储格式 Bitmap内存计算方法 图片文件存储格式 图片压缩方法 RGB_565压缩 质量压缩 尺寸压缩(缩放压缩) 采样率压缩 微信分享问 ...
- 糗事百科 android源码,Android高仿糗事百科(含服务端)
Android高仿糗事百科(含服务端) 积分: 23 智慧币 积分: 3 智慧币 [1.00元 ] 包含内容: 源码,全套工具 详情描述 如遇视频不清晰,请最大化观看演示 以下仅列出部分功能,全部功能 ...
- [Android开发那点破事]解决android.os.NetworkOnMainThreadException
昨天和女朋友换了手机,我的iPhone 4S 换了她得三星I9003.第一感觉就是好卡,果断刷机.以前是Android 2.3的系统.回来刷成了4.4. 好了,问题来了.在我用手机测试我们的APP的时 ...
- 【Android开发那点破事】打开APP加载页面实现
今天的破事呢就说说APP加载页面的实现.一般情况下,当APP打开的时候,我们需要做很多事情,比如检查网络连接啊,初始化一些配置啊等等.我们可以让这些事情在APP完全打开之前做完,然后呢在打开的过程中显 ...
- 【Android开发那点破事】解决android.os.NetworkOnMainThreadException
昨天和女朋友换了手机,我的iPhone 4S 换了她得三星I9003.第一感觉就是好卡,果断刷机.以前是Android 2.3的系统.回来刷成了4.4. 好了,问题来了.在我用手机测试我们的APP的时 ...
- 自定义控件知识储备-LayoutParams的那些事
在上一篇文章里,我总结了一下自定义控件需要了解的基础知识:View的绘制流程--<自定义控件知识储备-View的绘制流程>.其中,在View的测量流程里,View的测量宽高是由父控件的Me ...
- Android桌面快捷方式那些事与那些坑
原文来自http://blog.zanlabs.com/2015/03/14/android-shortcut-summary/ 将近二个多月没写博客了. 之前一段时间一直在搞红包助手,就没抽时间写博 ...
- Android LayoutParams源码分析
文章目录 LayoutParams源码分析 概述 LayoutParams基本用法 LayoutParams源码分析 LayoutParams源码分析 概述 LayoutParams是布局参数的意思, ...
最新文章
- jQuery通过ajax方法获取json数据不执行success的原因及解决方法
- Linux 小知识翻译 - 「架构」(arch)
- Android WebView缓存策略详解
- linux 格式化磁盘数据恢复_电脑文档被格式化,怎么恢复格式化文档!
- package org.apache.hadoop.conf does not exist解决
- 给定4个数字组合的C语言算法,leetcode 454. 四数相加 II c语言
- Linux如何建立用户(组)及调整用户(组)属性(案列+详细指令)
- 华为手机明年全面升级鸿蒙OS:其实两年前就能用
- Google 元素定制 T 恤
- Wordpress 5.2 beta 2 发布,支持 Emoji 12
- 动态规划之背包问题(优化版)
- android模拟器上https抓包
- 拼音输入法技巧-智能ABC
- 52单片机四种方法实现流水灯
- Python利用Matplotlib绘图无法显示中文字体的解决方案
- 类似PS的蒙版?可以实现,LVGL『Object mask对象蒙版控件』介绍
- Unirech:阿里云国际云服务器ecs建站流程
- bootstrap网格布局自适应问题
- 网上计算机能力提升研修心得,信息技术应用能力提升个人研修总结
- ILSpy中baml转化为xaml的改进(四)
热门文章
- Android RecyclerView之PagerSnapHelper原理解析(二)
- Android的JNI【实战教程】6⃣️--温控计
- 吐血干货,直播首屏耗时400ms以下的优化实践
- FFmpeg总结(七)AV系列结构体之AVIOContext
- 勤能补拙 VS 思考补拙
- 新型超级生物计算机简介,自然形成的超级生物计算机
- matlab中怎样提取结构体下的数据库,MATLAB如何提取结构体中数据
- updatepanel失效怎么办_[转]jquery与updatepanel二次失效问题解决方案-阿里云开发者社区...
- apt get 安装mysql5.7_ubuntu16.04下apt-get安装mysql5.7,文件目录结构
- 用JAVA打出的计算机_如何用Java代码操作计算机文件?