通过文档,查到TextView下有这么个方法
setLayoutParams(ViewGroup.LayoutParams params)
但是ViewGroup.LayoutParams
这个东西,并没有setMargins
方法,LinearLayout.LayoutParams
才有,请教下该如何写?
通过文档,查到TextView下有这么个方法
setLayoutParams(ViewGroup.LayoutParams params)
但是ViewGroup.LayoutParams
这个东西,并没有setMargins
方法,LinearLayout.LayoutParams
才有,请教下该如何写?
ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) view.getLayoutParams();
所有可以配置Margin
的ViewGroup
的LayoutParams
基本都来自MarginLayoutParams
,这是一个LayoutParams
的子类,你在通过getLayoutParams()
的时候强制转换成ViewGroup.MarginLayoutParams
即可
1 回答1.4k 阅读
2 回答978 阅读
1 回答1.2k 阅读
1 回答1.1k 阅读
1 回答963 阅读
1 回答924 阅读
738 阅读
手册上这样讲
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:如果父视图是
RelativeLayout
或者FrameLayout
,上面的做法无效,解决的办法是新建一个LinearLayout,然后把textView添加给它,再把这个LinearLayout添加给父视图:以上代码经过测试。