android layoutparams,Android LayoutParams用法解析
ViewGroup.LayoutParams介紹
LayoutParams攜帶了子控件針對父控件的信息,告訴父控件如何放置自己
LayoutParams類也只是簡單的描述了寬高,寬和高都可以設(shè)置成三種值:
1,一個確定的值;
2,FILL_PARENT,即填滿(和父容器一樣大小);
3,WRAP_CONTENT,即包裹住組件就好。
每一個ViewGroup(例如LinearLayout, RelativeLayout, CoordinatorLayout, etc)需要存儲有關(guān)其孩子view的屬性信息。它的孩子view被放在ViewGroup,這些位置信息存儲在一個包裝類viewgroup.layoutparams對象中。
為了包含一個特定的布局的具體參數(shù),viewgroup使用layoutparams Viewgroup類的子類來存儲。
例如
linearlayout.layoutparams
relativelayout.layoutparams
coordinatorlayout.layoutparams
對于margin有一個ViewGroup.MarginLayoutParams類代替ViewGroup.LayoutParams。
獲取ViewGroup.LayoutParams
getLayoutParams()方法可以獲取ViewGroup.LayoutParams對象。
舉例如下
public class ExampleView extends View {
public ExampleView(Context context) {
super(context);
setupView(context);
}
public ExampleView(Context context, AttributeSet attrs) {
super(context, attrs);
setupView(context);
}
public ExampleView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setupView(context);
}
private void setupView(Context context) {
if (getLayoutParams().height == 50){ // DO NOT DO THIS!
// This might produce NullPointerException
doSomething();
}
}
//...
}
ViewGroup.LayoutParams上下轉(zhuǎn)型
注意LayoutParams攜帶了子控件針對父控件的信息,告訴父控件如何放置自己,所以要使用相應(yīng)父控件的LayoutParams。
舉例說明,一個LinearLayout包含F(xiàn)rameLayout
錯誤使用
FrameLayout innerLayout = (FrameLayout)findViewById(R.id.inner_layout);
FrameLayout.LayoutParams par = (FrameLayout.LayoutParams) innerLayout.getLayoutParams();
正確的使用
FrameLayout innerLayout = (FrameLayout)findViewById(R.id.inner_layout);
LinearLayout.LayoutParams par = (LinearLayout.LayoutParams) innerLayout.getLayoutParams();
總結(jié)
以上是生活随笔為你收集整理的android layoutparams,Android LayoutParams用法解析的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言bellman算法,求 最短路径中
- 下一篇: python数学计算模块_Python-