一提到动态改变布局,那肯定是通过Java源码来改变了。
这可以拿iOS的约束布局做类比。
在iOS中布局所需要的约束可以通过outlet拉到源代码中,并通过OC或者SWIFT源代码在运行时对其进行控制。
在Android中,由于视图是视图,布局规则是布局规则(在Android中用于布局的叫做规则),2者是分开的。由于你是在xml中写的控件,所以你首先需要把控件引入到Java源代码中,然后再去获取该控件的布局规则,之后你再对获取到的规则进行设置,这2者都设置好了,你再推倒xml中去。
就这么简单啊。
首先获取控件。
this.lineView = findViewById(R.id.login_lineview);
this.lineView.setBackgroundColor(Color.WHITE);
设置布局参数
RelativeLayout.LayoutParams lineViewLayoutParams = (RelativeLayout.LayoutParams)this.lineView.getLayoutParams();
lineViewLayoutParams.height = Tools.gainScreenWidth(this) * 2 / 3;
lineViewLayoutParams.setMarginEnd(Tools.gainScreenHeight(this) * 3 / 8);
把布局参数添加到控件上面。
this.lineView.setLayoutParams(lineViewLayoutParams);
这个就是Android中的动态布局了。