如何在网格视图中设置图像大小

时间:2014-04-21 19:46:21

标签: android android-layout gridview

我有一个网格视图,其中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

3 个答案:

答案 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。列自动拉伸以填充屏幕。