如果我有一个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)