android的view中有setPadding,但是没有直接的setMargin方法。如果要在代码中设置该怎么做呢?
可以通过设置view里面的 LayoutParams
设置,而这个LayoutParams是根据该view在不同的GroupView而不同的。
布局文件如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <LinearLayout android:id="@+id/ceshi_ly" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:color/darker_gray" > <TextView android:id="@+id/ceshi_tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@android:color/holo_green_dark" android:text="测试动态设置margin" /> </LinearLayout> </RelativeLayout>
代码如下:
package com.android.testdemo; import android.app.Activity; import android.os.Bundle; import android.widget.LinearLayout; import android.widget.LinearLayout.LayoutParams; import android.widget.TextView; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView ceshiTv = (TextView) findViewById(R.id.ceshi_tv); LinearLayout.LayoutParams lp = (LayoutParams) ceshiTv.getLayoutParams(); lp.setMargins(30, 50, 22, 10); ceshiTv.setLayoutParams(lp); } }
效果如下:
当然也可以把其封装成方法,如下:
public static void setMargins (View v, int l, int t, int r, int b) { if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams(); p.setMargins(l, t, r, b); v.requestLayout(); } }
时间: 2024-11-07 15:20:21