android textview动态设置,通过代码设置TextView的margin参数_Android动态设置Margin的方法…

  • Post author:
  • Post category:其他


通过文档,查到TextView下有这么个方法setLayoutParams(ViewGroup.LayoutParams params),但是ViewGroup.LayoutParams这个东西,并没有setMargins方法,LinearLayout.LayoutParams才有,这可咋办?

手册上这样讲public void setLayoutParams (ViewGroup.LayoutParams params), 『该方法提供一些参数给父视图,指定了该view在父视图中的位置。

如果需要动态改变TextView(或者其它View)的margin属性(android:layout_marginTop, android:layout_marginBottom, android:layout_marginLeft, android:layout_marginRight),最好是通过代码动态添加这个View,而不是在layout中定义该View。

如果父视图是LinearLayout,那么就可以直接调用textView.setLayoutParams(params),然后在添加textView到LinearLayout:

方案1、如果这个控件实在XML中定义的  比如Textview

LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) textview.getLayoutParams();

lp.leftMargin = 0;

textview.setLayoutParams(lp);

方案2、如果这个空间是我们new出来的,就会会发现用上面的方法就会有空指针报错了。然后我们用另一种方法

LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);

layoutParams.setMargins(10,10,10,10);//4个参数按顺序分别是左上右下

textview.setLayoutParams(layoutParams);

第一种方法必须在控件已经存在的情况下才可以用。