2013-03-13 25 views
0

嘿,我一直在研究壁纸应用程序,它几乎已经完成,但是当我试图在各种设备上测试它时,Gridview图像会伸展或重叠我已阅读了一些关于支持MultiScreens的文档,我想我应该考虑所有屏幕(尺寸/分辨率/密度),但我不知道我怎么可以实现到我的代码 我laoutGridview Multiscreen支持?

<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/GridView1" 
android:layout_width="match_parent" 
android:layout_height="fill_parent" 
android:numColumns="auto_fit" 
android:columnWidth="90dp" 
android:horizontalSpacing="10dp" 
android:verticalSpacing="10dp" 
android:gravity="center" 
android:stretchMode="columnWidth" 
android:background="@android:color/black" 
> 

我Imageadapter

public View getView(int position, View view, ViewGroup parent) { 
    ImageView imageView = new ImageView(mContext); 
    try { 
     InputStream is = mContext.getAssets().open(list.get(position)); 
     Bitmap bm = BitmapFactory.decodeStream(is); 
     imageView.setImageBitmap(bm); 
     imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); 
     if (mContext.getResources().getDisplayMetrics().densityDpi > 200) { 
      imageView.setLayoutParams(new GridView.LayoutParams(mheight/3, v mwidth/3)); 
     } 
     else{ 
      imageView.setLayoutParams(new GridView.LayoutParams(mheight/3, mwidth/3)); 
     } 

    } catch (IOException e) { 

     e.printStackTrace(); 
    } 
    // TODO Auto-generated method stub 
    return imageView; 
} 

我只是想对所有手机屏幕 显示图像的3列,如果任何人都可以指导我一定教程中,我会很高兴 在此先感谢

更新的代码

public View getView(int position, View view, ViewGroup parent) { 
    ImageView imageView = new ImageView(mContext); 
    try { 
     InputStream is = mContext.getAssets().open(list.get(position)); 
     Bitmap bm = BitmapFactory.decodeStream(is); 
     imageView.setImageBitmap(bm); 
     imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);   
    } catch (IOException e) { 

     e.printStackTrace(); 
    } 
    // TODO Auto-generated method stub 
    return imageView; 
} 

The layout 


<GridView xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/GridView1" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:numColumns="3" 
android:horizontalSpacing="10dp" 
android:verticalSpacing="10dp" 
android:gravity="center" 
android:stretchMode="columnWidth" 
android:background="@android:color/black" 
> 

+0

'android:numColumns =“3”'? – Geobits 2013-03-13 21:20:04

+0

图像仍然与彼此冲突 – Joseph27 2013-03-14 09:39:18

回答

0

你的问题是有点混乱,但如果你想这样做:

我只是想显示在所有手机上的3列图像s creens

然后它比较简单。

首先,设置GridView的在XML属性:

android:numColumns="3" 
android:stretchMode="columnWidth" 

这将告诉它使用三列,并把它们延伸到可用的宽度。

之后,摆脱测量代码。你不应该需要它,因为GridView可以照顾孩子的三围:

if (mContext.getResources().getDisplayMetrics().densityDpi > 200) { 
     imageView.setLayoutParams(new GridView.LayoutParams(mheight/3, v mwidth/3)); 
    } 
    else{ 
     imageView.setLayoutParams(new GridView.LayoutParams(mheight/3, mwidth/3)); 
    } 
+0

oky我试过了,它在GS2 4.3英寸完美工作,但在银河王牌3.7英寸有巨大的空间垂直和我的平板电脑10.1英寸也有空间,但水平我会上传图片,如果你仍然't得到它 – Joseph27 2013-03-14 17:21:23

+0

图片可能会帮助,以及更新的代码 – Geobits 2013-03-14 17:24:09

+0

这里3 ace/GS2 /平板样品[图片](http://imageshack.us/g/585/sc20130314190222.png/) – Joseph27 2013-03-14 18:01:11