安卓常见类备忘录之LayoutParams

来源:互联网 发布:布林线指标源码 编辑:程序博客网 时间:2024/05/21 17:19

1、简介及常见子类


LayoutParams,全称LayoutParameters。Layout是布局,而Parameters乃是参数的意思,这个类一般用在自定义的View控件,或是获取View的宽高值上。


在谷歌官方的API中,对其定义为“view通过layoutparams来告诉父View,希望被如何布局”。而基本的LayoutParams只会描述宽高,并拥有三个大家耳熟能详的常量,即:

FILL_PARENT、MATCH_PARENT和WRAP_CONTENT。


如果希望定义一些其他的参数如Margin、Padding等等,就需要用到LayoutParams的子类。


常见直接子类

AbsListView.LayoutParamsAbsoluteLayout.LayoutParamsGallery.LayoutParamsViewGroup.MarginLayoutParamsViewPager.LayoutParams,WindowManager.LayoutParams


常见间接子类

ActionBar.LayoutParamsActionMenuView.LayoutParamsBaseCardView.LayoutParamsDrawerLayout.LayoutParamsFrameLayout.LayoutParams,GridLayout.LayoutParamsGridLayoutManager.LayoutParamsLinearLayout.LayoutParamsLinearLayoutCompat.LayoutParamsRadioGroup.LayoutParams,RecyclerView.LayoutParamsRelativeLayout.LayoutParamsSlidingPaneLayout.LayoutParamsStaggeredGridLayoutManager.LayoutParams,TableLayout.LayoutParamsTableRow.LayoutParamsToolbar.LayoutParams


2、常见方法


View.getLayoutParams();


字面上好像是返回该View对应的LayoutParams。但实际上返回的为父View的LayoutParams,这个其实比较好理解,因为LayoutParams实际上就是告诉父View如何去设置子View布局的。谷歌官方文档中说的很清楚,如果该View没有挂靠在父View或是setLayoutParams这个方法没有调用成功,则该方法会返回null;而如果该View已经挂靠在父View上,该方法永远不会返回null。


ViewGroup.setLayoutParams(params);


ViewGroup设置它的LayoutParams参数,如何去布局子类控件。


3、在自定义ViewGroup时的用法


在自定义ViewGroup时,可以使用LayoutParams来为ViewGroup中的子控件设置参数。


如:定义一个新的LayoutParams用来给新添加的组件设置布局参数。


<pre name="code" class="java">LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);//构造方法中的两个参数分别为宽高lp.addRule(RelativeLayout.ALIGN_PARENT_LAYOUT, TRUE); //如果希望添加其他的参数,可以使用addRule方法,此处设置参数为对齐父ViewViewGroup.this.addView(view, lp); //最后将要采用该参数的子View对象添加到ViewGroup中




自定义ViewGroup时设置对应的LayoutParams,复写以下方法即可,返回值可设置希望该ViewGroup对应的的LayouParams:


public LayoutParams generateLayoutParams(AttributeSet attrs) {        return new CustomLayout.LayoutParams(getContext(), attrs);    }


0 0
原创粉丝点击