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

时间:2015-03-29 16:20:09

标签: android android-layout

我的应用包含3个图像视图,我使用textview作为占位符,这是我的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);

}

1 个答案:

答案 0 :(得分:0)

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

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