Android 设备旋转后,ImageView变小

Android 设备旋转后,ImageView变小,android,gridview,rotation,imageview,android-viewholder,Android,Gridview,Rotation,Imageview,Android Viewholder,设备旋转后->图像id=list_图像2保持小,就像在波特率模式下一样 似乎是因为我更改了gridView.setNumColumns3;的列数;,但是viewholder仍然包含以前的imageview和以前的宽度和高度,并且我尝试使gridView.invalidate无效;在OnConfiguration中已更改…但没有结果 已添加到清单中的活动 android:configChanges="keyboardHidden|orientation|screenSize" 下面是item

设备旋转后->图像id=list_图像2保持小,就像在波特率模式下一样 似乎是因为我更改了gridView.setNumColumns3;的列数;,但是viewholder仍然包含以前的imageview和以前的宽度和高度,并且我尝试使gridView.invalidate无效;在OnConfiguration中已更改…但没有结果

已添加到清单中的活动

  android:configChanges="keyboardHidden|orientation|screenSize"
下面是item_grid.xml

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/list_row_root"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal"
        android:paddingLeft="1dip"
        android:paddingRight="1dip"


 <ImageView
     android:id="@+id/list_image2"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:layout_centerInParent="true"
     android:minWidth="@dimen/grid_item_width"
     android:minHeight="@dimen/grid_item_height"
     android:src="@drawable/ic_action_cloud"
     android:scaleType="fitXY"
    />

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="30dp"

        android:layout_alignBottom="@+id/list_image2"
        android:layout_alignTop="@+id/list_image2"
        android:layout_centerHorizontal="true" />

    <RelativeLayout
        android:id="@+id/likes_RelativeLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/field_likes"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:layout_alignBottom="@+id/list_image2"
        android:layout_alignRight="@+id/list_image2"
        android:layout_marginRight="4dp"
        android:layout_marginBottom="4dp" >

        <TextView
            android:id="@+id/likes"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:textColor="@android:color/white"
            android:text="265465" />

         <ImageView
             android:id="@+id/btn_favoutites"
             android:layout_width="25dp"
             android:layout_height="25dp"
             android:layout_centerVertical="true"
             android:layout_marginLeft="5dp"
             android:layout_toRightOf="@+id/likes"
             android:src="@drawable/btn_rating_star_on_normal_holo_dark"
             android:text="Button" />

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/btn_RelativeLayout"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignBottom="@+id/likes_RelativeLayout"
        android:layout_alignLeft="@+id/likes_RelativeLayout"
        android:layout_alignRight="@+id/likes_RelativeLayout"
        android:layout_alignTop="@+id/likes_RelativeLayout"
        android:background="@drawable/field_like_clickable_style" >

    </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list_row_root"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal"
    android:paddingLeft="1dip"
    android:paddingRight="1dip"
     >
     <ImageView
            android:id="@+id/list_image2"
            android:layout_width="match_parent"
            android:layout_height="@dimen/grid_item_height"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:scaleType="centerCrop"
            android:src="@android:color/transparent"
             />
这是我的适配器:

publ

ic class LazyAdapter2 extends BaseAdapter{
    public LazyAdapter2(Context context, ArrayList<WallImage> d) {

            mContext = context;
            data=d;
            inflater = (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

            imageLoader = ImageLoader.getInstance();
            options = new DisplayImageOptions.Builder()
                .cacheInMemory(true)
                .cacheOnDisk(true)
                .resetViewBeforeLoading(true)
                .imageScaleType(ImageScaleType.EXACTLY)// default
                .build();
        }

 public View getView( int position,  View convertView, ViewGroup parent) {
         final ViewHolderItem viewHolder;
        if(convertView==null)
        {
             convertView = inflater.inflate(R.layout.item_grid, null);
             viewHolder = new ViewHolderItem();
             viewHolder.thumb_image=(ImageView)convertView.findViewById(R.id.list_image2); // thumb image
             convertView.setTag(viewHolder);

        }else{
            viewHolder = (ViewHolderItem) convertView.getTag();
        }


        WallImage imageObject = data.get(position);
        viewHolder.likes.setText(imageObject.views);
        imageLoader.displayImage(imageObject.preview, viewHolder.thumb_image, options);

        return convertView;
    }

}

不仅仅是失效,还可以像这样处理Handler.post


这可能是因为在getView方法中使用了convertView? 它保留原始布局,在方向更改时不重新创建

您可以向ViewHolderItem类添加一个指示屏幕方向的布尔成员


当您循环使用视图时,您将测试您的viewHolder方向。如果它与当前屏幕方向不同,请不要将其回收。

通过更改项目_grid.xml解决

<?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/list_row_root"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal"
        android:paddingLeft="1dip"
        android:paddingRight="1dip"


 <ImageView
     android:id="@+id/list_image2"
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:layout_centerInParent="true"
     android:minWidth="@dimen/grid_item_width"
     android:minHeight="@dimen/grid_item_height"
     android:src="@drawable/ic_action_cloud"
     android:scaleType="fitXY"
    />

    <ProgressBar
        android:id="@+id/progressBar1"
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="30dp"

        android:layout_alignBottom="@+id/list_image2"
        android:layout_alignTop="@+id/list_image2"
        android:layout_centerHorizontal="true" />

    <RelativeLayout
        android:id="@+id/likes_RelativeLayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/field_likes"
        android:paddingTop="5dp"
        android:paddingBottom="5dp"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:layout_alignBottom="@+id/list_image2"
        android:layout_alignRight="@+id/list_image2"
        android:layout_marginRight="4dp"
        android:layout_marginBottom="4dp" >

        <TextView
            android:id="@+id/likes"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerVertical="true"
            android:textColor="@android:color/white"
            android:text="265465" />

         <ImageView
             android:id="@+id/btn_favoutites"
             android:layout_width="25dp"
             android:layout_height="25dp"
             android:layout_centerVertical="true"
             android:layout_marginLeft="5dp"
             android:layout_toRightOf="@+id/likes"
             android:src="@drawable/btn_rating_star_on_normal_holo_dark"
             android:text="Button" />

    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/btn_RelativeLayout"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignBottom="@+id/likes_RelativeLayout"
        android:layout_alignLeft="@+id/likes_RelativeLayout"
        android:layout_alignRight="@+id/likes_RelativeLayout"
        android:layout_alignTop="@+id/likes_RelativeLayout"
        android:background="@drawable/field_like_clickable_style" >

    </RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/list_row_root"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:orientation="horizontal"
    android:paddingLeft="1dip"
    android:paddingRight="1dip"
     >
     <ImageView
            android:id="@+id/list_image2"
            android:layout_width="match_parent"
            android:layout_height="@dimen/grid_item_height"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:scaleType="centerCrop"
            android:src="@android:color/transparent"
             />
在进行ImageView之后,屏幕旋转后,android:layout\u height=@dimen/grid\u item\u height=>图像大小保持不变,但要在ImageView中调整Imagee的大小,在图像被粗略剪切后,我使用android:scaleType=centerCrop,但问题已经解决

尝试ImageScaleType.in\u SAMPLE\u INT 及


我应该在哪里做呢?@Unuchek在onconfiguration中如何?如果在旋转后调用它,会发生更改吗?@Unucheck抱歉,我不再有主意了。只是一个旁注,我知道这不是一个答案,这就是为什么它是一个评论:Android:配置改变=键盘隐藏方向,屏幕大小是一个坏习惯-尝试适应方向,而不是避免考虑它。将其更改为.imageScaleTypeImageScaleType.justice\u。当图像大小较小时,它将很有帮助。@SidDhangot无结果