android网格视图适配器无法在图像大小调整后选择项目

时间:2013-09-27 06:12:43

标签: android layout gridview

我有一个包含gridviewadapter的布局。 gridview布局包含单个图像视图。

一切正常,我可以滚动并选择一个项目,直到我在图像视图上设置比例。一旦我缩放图像视图,滚动仍然有效但我无法选择项目(如果我随机点击屏幕,偶尔会触发更改事件,但它看起来非常随机)。

这是我的GridViewAdapted getView代码:

public View getView(int position, View convertView, ViewGroup parent) 
{
    // TODO Auto-generated method stub
    ViewHolder view;
    LayoutInflater inflator = activity.getLayoutInflater();

    if(convertView==null)
    {
        view = new ViewHolder();
        convertView = inflator.inflate(R.layout.grid_item, null);

        view.imgLetter = (ImageView) convertView.findViewById(R.id.GridImage);


        convertView.setTag(view);
    }
    else
    {
        view = (ViewHolder) convertView.getTag();
    }
    view.imgLetter.setBackground(letters.get(position).getDrawable(view.imgLetter.getContext()));

    //as soon as these two lines are added, it becomes 
    //impossible to select an item in my grid view!
    view.imgLetter.setScaleX((float)0.5);
    view.imgLetter.setScaleY((float)0.5);         
    return convertView;


}

这是我的GridItem.xml

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/GridImage"
android:gravity="center"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:layout_height="wrap_content"
android:layout_width="wrap_content" />

在XML文件中设置比例时会出现相同的行为

2 个答案:

答案 0 :(得分:0)

在我自己的代码中,我有MyAdapter extends BaseAdapter。如果您正在做类似的事情,那么在缩放图像后尝试调用

notifyDataSetChanged();

请参阅BaseAdapter

答案 1 :(得分:0)

答案是将imageview包装在GridItem.xml中的LinearLayout

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">
    <ImageView 
    android:id="@+id/GridImage"
    android:gravity="center"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:layout_height="wrap_content"
    android:layout_width="wrap_content" />
</LinearLayout>