在layout文件中设置了几个 LineraLayout ,现需要根据实际情况动态调整各layout的位置。试了很多方法,终于确认成功有效的是:
layout中 假设两个LineraLayout的id是 layout2和layout3 ,现要将它们的顶边距调整为100和200:
这种方法是不成功的,会导致2,3都在同一位置:
LinearLayout layout2= (LinearLayout)findViewById(R.id.layout2);
LinearLayout layout3= (LinearLayout)findViewById(R.id.layout3);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT);
lp.setMargins(0, 100, 0, 0);
layout3.setLayoutParams(lp);
lp.setMargins(0, 200, 0, 0);
layout2.setLayoutParams(lp);
应该这样:
LinearLayout layout2= (LinearLayout)findViewById(R.id.layout2);
LinearLayout layout3= (LinearLayout)findViewById(R.id.layout3);
RelativeLayout.LayoutParams lp3 = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT);
RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,RelativeLayout.LayoutParams.MATCH_PARENT);
lp3.setMargins(0, 100, 0, 0);
layout3.setLayoutParams(lp3);
lp2.setMargins(0, 200, 0, 0);
layout2.setLayoutParams(lp2);
这与vector自定义类的赋值必须在循环体内有些相似。