我正在使用 GridView 来显示我的数据 [即图像及其标题]
我的图像是用我的图像加载器库动态加载的。问题是我的一些图像是横向或纵向的。由于这个原因,我的网格元素不保持精确的平方比。有些垂直拉伸(stretch)或以其他方式压缩。
<GridView
android:id="@+id/fcpl_grid_listview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="2"
android:scrollingCache="false"/>
这是我的 getView 方法:
public View getView(final int position, View convertView, final ViewGroup parent) {
final ViewHolder viewholder;
Log.e("Calling...","getView");
if (convertView == null) {
convertView = inflater.inflate(R.layout.inflater_product_list, parent, false);
viewholder = new ViewHolder();
viewholder.productImage = (ImageView) convertView.findViewById(R.id.ipl_imageview);
viewholder.backGroundLayout = (RelativeLayout) convertView.findViewById(R.id.ipl_bk_layout);
viewholder.productName = (TextView) convertView.findViewById(R.id.ipl_productname);
convertView.setTag(viewholder);
} else {
viewholder = (ViewHolder) convertView.getTag();
}
viewholder.productName.setText("SOME TEXT");
String imageUrl = "SOME URL";
imageLoader.get(imageUrl, VALUES_FOR_MY_IMAGE_LOADER_LIBRARY));
return convertView;
}
我在网上尝试了不同的建议方法,但都没有用,因为我有动态图像加载,并且在调用 getView 时不知道 imageView layoutParams。
最佳答案
我建议您创建扩展 ImageView
(或 GridView
)的类并测量 Root View 或任何其他父 View 的边界。然后只需在您的项目 xml 中使用它。
public class SquareImageView extends ImageView {
public SquareImageView(Context context) {
super(context);
}
public SquareImageView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public SquareImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int width = MeasureSpec.getSize(widthMeasureSpec);
int height = MeasureSpec.getSize(heightMeasureSpec);
View rootView = this.getRootView();
if (rootView != null) {
width = rootView.getWidth();
height = rootView.getHeight();
}
int size = width > height ? height : width;
super.onMeasure(size, size);
setMeasuredDimension(size, size);
}
}
关于android - 让 GridView 项目完全正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21573554/