如何在 android 上动态设置布局边距

How to set layout margin dynamically on android

我的应用程序包含 3 个图像视图,我使用文本视图作为占位符,这是我的 layout.xml

<LinearLayout 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"
android:orientation="vertical"
android:background="@layout/back"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".SplasActivity" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:text="    " />

<ImageView
    android:id="@+id/imageView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:scaleType="fitXY"
    android:src="@drawable/list_sher" />

<ImageView
    android:id="@+id/imageView2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:scaleType="fitXY"
    android:src="@drawable/list_shaer" />

<ImageView
    android:id="@+id/imageView3"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:scaleType="fitXY"
    android:src="@drawable/list_fav" />

然后我使用下面的代码更改图像大小,它工作正常但是当我为我的 textview 设置边距时,一切都变得疯狂。 textview 保留但我看不到任何 imageview !

private void setsize(){
    // this codes work fine //
    DisplayMetrics dm=new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);
    int w=dm.widthPixels;
    int h=dm.heightPixels;

    int h2=(h/7);
    int w2=w-((w*10)/100);
    int h3=(h/20)+1;

    LinearLayout.LayoutParams pram=new LinearLayout.LayoutParams(w2,h2);
    img1.setLayoutParams(pram);
    img2.setLayoutParams(pram);
    img3.setLayoutParams(pram);


    // the problem is here //
    LinearLayout ll = new LinearLayout(this);
    ll.setOrientation(LinearLayout.VERTICAL);

    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
    LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);

    layoutParams.setMargins(0, h3, 0, 0);
    ll.addView(txt1,layoutParams);

}

方法 LayoutParams() 的第二个参数应该是 WRAP_CONTENT,表示布局的高度,MATCH_PARENT 表示视图要与其父视图一样大,这会导致您的图像消失:

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