我有一个网格视图,其中3列包含在相对布局中。 目前,大型设备(7英寸平板电脑)上的视图显得很小,因此我想根据屏幕尺寸增加图像的大小。
我在GridView的baseApdter中的getView():
@Override
public View getView(int position, View convertView, ViewGroup parent) {
AppInfo entry = mListAppInfo.get(position);
//create a new ImageView and TextView for each item refernced by teh adpter
if(convertView == null) {
//if its not recycled, intilise some attributs
LayoutInflater inflater = LayoutInflater.from(mContext);
convertView = inflater.inflate(R.layout.layout_appinfo, null);
}
//want to change the soze of the image according to screensize then place in the gridview with this apdter
ImageView ivIcon = (ImageView)convertView.findViewById(R.id.ivIcon);
//ivIcon.setLayoutParams(new GridView.LayoutParams(
//(int)mContext.getResources().getDimension(R.dimen.widthImageGridview),
//(int)mContext.getResources().getDimension(R.dimen.heihgtImageGridview)));
ivIcon.setLayoutParams(new RelativeLayout.LayoutParams(85, 85));
ivIcon.setScaleType(ImageView.ScaleType.CENTER_CROP);
ivIcon.setPadding(8, 8, 8, 8);
ivIcon.setImageBitmap(entry.getIcon());
TextView tvName = (TextView)convertView.findViewById(R.id.tvName);
tvName.setText(entry.getName());
tvName.setTextColor(Color.WHITE);
return convertView;
}
我的带网格视图的XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/background"
tools:context=".Main" >
<GridView
android:id="@+id/gvMain"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="200dip"
android:gravity="center"
android:horizontalSpacing="40dip"
android:numColumns="3"
android:padding="10dip"
android:stretchMode="columnWidth"
android:verticalSpacing="10dip" />
<Button
android:id="@+id/btn_facebook"
android:layout_width="45dp"
android:layout_height="45dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:paddingRight="10dp"
android:paddingBottom="10dp"
android:background="@drawable/fb_button" />
</RelativeLayout>
尝试使用imageView.setLayoutparams(...)抛出
java.lang.ClassCastException: android.widget.RelativeLayout $ LayoutParams无法强制转换为 android.widget.LinearLayout $的LayoutParams
答案 0 :(得分:3)
例外是由您的代码引起的:
ivIcon.setLayoutParams(new RelativeLayout.LayoutParams(85, 85));
更改为:
ivIcon.setLayoutParams(new LinearLayout.LayoutParams(85, 85));
因为您在layout_appinfo.xml中使用了LinearLayout。 为任何对象设置布局参数时,它取决于父布局类型。
答案 1 :(得分:1)
你可以尝试代码。
ivIcon.setColumnWidth(number);
ivIcon.setStretchMode(GridView.NO_STRETCH);
答案 2 :(得分:0)
当我使用GridView时,我没有指定columnWidth
。列自动拉伸以填充屏幕。