layoutParams是view用來描述自己在父View中的一些位置參數(shù)信息。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<LinearLayout
android:id="@+id/view_r"
android:layout_width="wrap_content"
android:layout_height="80dp">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="32423"
android:textSize="30sp" />
</LinearLayout>
</RelativeLayout>
xml布局
這里后去xml中的view,通過getLayoutParams得到的是RelativeLayout.LayoutParams堕仔,得知獲取的是父view類型的layoutParams幔崖。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout view = findViewById(R.id.view_r);
ViewGroup.LayoutParams params = view.getLayoutParams();
if (params instanceof LinearLayout.LayoutParams) {
Log.i("jinwei", "LinearLayout");
} else if (params instanceof RelativeLayout.LayoutParams) {
Log.i("jinwei", "RelativeLayout");
RelativeLayout.LayoutParams p = (RelativeLayout.LayoutParams) view.getLayoutParams();
p.setMarginStart(200);
p.addRule(RelativeLayout.ALIGN_START);
} else if (params instanceof FrameLayout.LayoutParams) {
Log.i("jinwei", "FrameLayout");
} else if (params instanceof ViewGroup.MarginLayoutParams) {
Log.i("jinwei", "MarginLayoutParams");
}
}
ViewGroup.LayoutParams
這是頂級的params须板,它有很多子類params旋讹,基本上只要是布局layout都會有一個繼承于ViewGroup.LayoutParams的子類砾跃。我們可以通過這些LayoutParams矫户,動態(tài)多布局設置位置參數(shù)了。