内容简介:LayoutParams是View用来告诉它的父控件如何放置自己的,LayoutParams是ViewGroup类里的一个静态内部类。ViewGroup.LayoutParams仅仅描述了这个View想要的宽度和高度。可以理解成LayoutParams是子View告诉父View自身宽高的桥梁。可取的值:
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等。
实际使用的一个例子
Activity:
public class MoveActivity extends AppCompatActivity { private ImageView mIv; private TextView mTvBlue; private TextView mTvGreen; private ViewGroup.LayoutParams mVgLp; @Override protected 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() { @Override public 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() { @Override public 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() { @Override public 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() { @Override public 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() { @Override public 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() { @Override public 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() { @Override public 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"?> <LinearLayout android: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"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android: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="黑色最左!!"/> <TextView android: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="黑色最右!!"/> <TextView android: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> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android: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="黑色靠左垂直居中"/> <TextView android: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> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal" > <TextView android: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="绿在蓝右边"/> <TextView android: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> <RelativeLayout android:layout_width="match_parent" android:layout_height="200px" android:background="#66ff0000" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="RelativeLayout" android:layout_centerInParent="true" /> <ImageView android:id="@+id/mIv" android:layout_width="30dp" android:layout_height="40px" android:background="#000" android:layout_centerHorizontal="true" /> <TextView android:id="@+id/mTvBlue" android:layout_width="20dp" android:layout_height="20dp" android:text="蓝" android:gravity="center" android:background="#660000ff" /> <TextView android: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>
热度: 4
以上所述就是小编给大家介绍的《Android-LayoutParams的那些事》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
腾讯网UED体验设计之旅
任婕 等 / 电子工业出版社 / 2015-4 / 99.00元
《腾讯网UED体验设计之旅》是腾讯网UED的十年精华输出,涵盖了丰富的案例、极富冲击力的图片,以及来自腾讯网的一手经验,通过还原一系列真实案例的幕后设计故事,从用户研究、创意剖析、绘制方法、项目管理等实体案例出发,带领读者经历一场体验设计之旅。、 全书核心内容涉及网媒用户分析与研究方法、门户网站未来体验设计、H5技术在移动端打开的触控世界、手绘原创设计、改版迭代方法、文字及信息图形化设计、媒......一起来看看 《腾讯网UED体验设计之旅》 这本书的介绍吧!
Base64 编码/解码
Base64 编码/解码
UNIX 时间戳转换
UNIX 时间戳转换