ImageViews 中加载 Picasso 的图片在 GridLayout 中溢出?
Images loaded with Picasso in ImageViews are overflowing in GridLayout?
我可以通过以编程方式在 GridLayout
中设置 ImageView
的背景颜色,使 UI 看起来像这样。
我正在使用 Picasso 从这些网格中的服务器加载图像。图像正在拉伸以超出其定义的 colspan 和 rowspan。为什么我得到这个?
网格布局xml
<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/tableGrid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:horizontalSpacing="0dp"
android:stretchMode="columnWidth"
android:verticalSpacing="0dp"
app:alignmentMode="alignBounds"
app:columnOrderPreserved="true"
app:rowOrderPreserved="true"
app:useDefaultMargins="false"/>`
还有我的网格设置方法在Activity
private void setGrids(int totalRows, int totalCols) {
int total = gridList.size();
gridLayout.setColumnCount(totalCols);
gridLayout.setRowCount(totalRows);
for (int i = 0; i < total; i++) {
float rowWeight = Float.parseFloat(gridList.get(i).getRowSpan() + "F");
float colWeight = Float.parseFloat(gridList.get(i).getColSpan() + "F");
GridLayout.Spec rowSpan = GridLayout.spec(gridList.get(i).getStartRow(), gridList.get(i).getRowSpan(), rowWeight);
GridLayout.Spec colSpan = GridLayout.spec(gridList.get(i).getStartColumn(), gridList.get(i).getColSpan(), colWeight);
GridLayout.LayoutParams gridParam = new GridLayout.LayoutParams(
rowSpan, colSpan);
GridLayout.LayoutParams param = new GridLayout.LayoutParams();
param.height = 0;
param.width = 0;
ImageView oImageView = new ImageView(this);
oImageView.setLayoutParams(new GridLayout.LayoutParams(param));
/*
Random rnd = new Random();
int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
oImageView.setBackgroundColor(color);
*/
Picasso.with(this).load(gridList.get(i).getProductImage()).noFade().into(oImageView);
oImageView.setAdjustViewBounds(true);
oImageView.setScaleType(ImageView.ScaleType.FIT_XY);
gridLayout.addView(oImageView, gridParam);
}
}
指导我,以便我可以正确地在这些网格中调整图像。
我解决了我的问题。
问题在于使用 Picasso 加载图像。图书馆正在调整我的形象。
我将图片加载行更改为
Picasso.with(this).load(gridList.get(i).getProductImage()).fit().noFade().into(oImageView);
我可以通过以编程方式在 GridLayout
中设置 ImageView
的背景颜色,使 UI 看起来像这样。
我正在使用 Picasso 从这些网格中的服务器加载图像。图像正在拉伸以超出其定义的 colspan 和 rowspan。为什么我得到这个?
网格布局xml
<android.support.v7.widget.GridLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/tableGrid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:horizontalSpacing="0dp"
android:stretchMode="columnWidth"
android:verticalSpacing="0dp"
app:alignmentMode="alignBounds"
app:columnOrderPreserved="true"
app:rowOrderPreserved="true"
app:useDefaultMargins="false"/>`
还有我的网格设置方法在Activity
private void setGrids(int totalRows, int totalCols) {
int total = gridList.size();
gridLayout.setColumnCount(totalCols);
gridLayout.setRowCount(totalRows);
for (int i = 0; i < total; i++) {
float rowWeight = Float.parseFloat(gridList.get(i).getRowSpan() + "F");
float colWeight = Float.parseFloat(gridList.get(i).getColSpan() + "F");
GridLayout.Spec rowSpan = GridLayout.spec(gridList.get(i).getStartRow(), gridList.get(i).getRowSpan(), rowWeight);
GridLayout.Spec colSpan = GridLayout.spec(gridList.get(i).getStartColumn(), gridList.get(i).getColSpan(), colWeight);
GridLayout.LayoutParams gridParam = new GridLayout.LayoutParams(
rowSpan, colSpan);
GridLayout.LayoutParams param = new GridLayout.LayoutParams();
param.height = 0;
param.width = 0;
ImageView oImageView = new ImageView(this);
oImageView.setLayoutParams(new GridLayout.LayoutParams(param));
/*
Random rnd = new Random();
int color = Color.argb(255, rnd.nextInt(256), rnd.nextInt(256), rnd.nextInt(256));
oImageView.setBackgroundColor(color);
*/
Picasso.with(this).load(gridList.get(i).getProductImage()).noFade().into(oImageView);
oImageView.setAdjustViewBounds(true);
oImageView.setScaleType(ImageView.ScaleType.FIT_XY);
gridLayout.addView(oImageView, gridParam);
}
}
指导我,以便我可以正确地在这些网格中调整图像。
我解决了我的问题。 问题在于使用 Picasso 加载图像。图书馆正在调整我的形象。 我将图片加载行更改为
Picasso.with(this).load(gridList.get(i).getProductImage()).fit().noFade().into(oImageView);