我有一个Scrollview,里面有一个Tablelayout。 Tablelayout在xml中定义如下:
<TableLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/tablelayout"/>
tablelayout的行及其视图以编程方式添加,如下所示:
private void createFeedLayout(int menuId, int newestOrBest, int count, int startId) {
TableLayout tbl = (TableLayout)FindViewById(Resource.Id.tablelayout);
List<Helpers.Objects.Picture> pictures = getPictures(menuId, newestOrBest, startId, count);
TableRow row = new TableRow(this);
tbl.AddView(row);
row.SetBackgroundResource(Resource.Drawable.background_whitebar_challengeopen);
foreach (Helpers.Objects.Picture picture in pictures)
{
if (counter == PICTURESINAROW)
{
row = new TableRow(this);
row.SetGravity(GravityFlags.Left);
row.SetBackgroundResource(Resource.Drawable.background_whitebar_challengeopen);
tbl.AddView(row);
counter = 0;
}
Bitmap bmp_picture = PhotoHelpers.DecodePhotoFromBase64(picture.photo);
bmp_picture = PhotoHelpers.ResizeImage(bmp_picture, (Resources.DisplayMetrics.WidthPixels / PICTURESINAROW) - SPACEBETWEENPICS,
(Resources.DisplayMetrics.WidthPixels / PICTURESINAROW) - SPACEBETWEENPICS, false);
ImageButton button = new ImageButton(this);
button.Id = i;
button.Click += openImage;
button.SetImageBitmap(bmp_picture);
button.SetBackgroundColor(Color.Red);
button.SetAdjustViewBounds(true);
row.AddView(button);
counter++;
i++;
}
}
}
代码在Tablerow中添加3张图片,然后创建一个新行。预期的结果将是3张图片,它们直接位于屏幕的左边缘,彼此相邻。
但我得到的是这样的东西:
(只有红色背景的部分很重要)
这里我很困惑。我在每个按钮上添加了SetAdjustViewBounds(true);
,并认为这会导致按钮与图片一样大。因此SetBackgroundColor(Color.Red);
根本不重要。但似乎按钮周围有一个大框架。
有人知道可能导致此行为的原因吗?
提前致谢!
答案 0 :(得分:0)
如果您希望图像按钮包装内容,则需要设置LayoutParameters。试试这个:
button.LayoutParameters = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent);
答案 1 :(得分:0)
好的,我让它上班了。问题是TableLayout本身。屏幕中间的圆形图片也是该布局的一部分。 “红色”区域中的TableRows以某种方式调整了这些先前TableRows的列宽。
因此,我创建了一个新的TableLayout,并为底部的图片添加了TableRows。
我确定有更好的解决方案,但至少它现在有效。