以编程方式调整TableLayout中的ImageView大小

Eur*_*nes 0 android

如果我有一个TableLayout结构(下面)定义了2个ImageViews.一个还指定宽度/高度的像素值.这正如我所料 - Pic 1的大小调整为50px,pic2保持原始大小:

<TableLayout android:layout_width="wrap_content" android:layout_height="wrap_content">
    <TableRow>
        <ImageView android:src="@drawable/pic1" android:layout_width="50px" android:layout_height="50px" />
        <ImageView android:src="@drawable/pic2" android:layout_width="wrap_content" android:layout_height="wrap_content" />
    </TableRow>
</TableLayout>
Run Code Online (Sandbox Code Playgroud)

但我真的需要以编程方式执行上述操作,所以我这样做......

TableLayout tableLayout = new TableLayout(ctx);
TableRow tableRow = new TaleRow(ctx);

ImageView imageViewOne = new ImageView(ctx);
ImageView imageViewTwo = new ImageView(ctx);
imageViewOne.setImageResource(R.drawable.pic1);
imageViewTwo.setImageResource(R.drawable.pic2);

imageViewOne.setLayoutParams(new LayoutParams(50, 50));

rootView.addView(tableLayout);
tableLayout.addView(tableRow);
tableRow.addView(imageViewOne);
tableRow.addView(imageViewTwo);
Run Code Online (Sandbox Code Playgroud)

上面的内容与XML不同 - 在向它添加setLayoutParams()方法之后,第一个ImageView根本没有使用编程方式显示.

我在这里错过了什么,有什么不同之处?

谢谢!

Eur*_*nes 13

好的,我已经设法解决了这个问题.而不是使用:

imageViewOne.setLayoutParams(new LayoutParams(50, 50));
Run Code Online (Sandbox Code Playgroud)

我改用了这个:

imageViewOne.setLayoutParams(new TableRow.LayoutParams(50, 50));
Run Code Online (Sandbox Code Playgroud)