android中gridview中的图像重叠

android中gridview中的图像重叠,android,android-gridview,Android,Android Gridview,我正在创建gridview以显示图像。即使我设置了垂直和水平间距,静止图像也会相互重叠。为什么会这样?如何解决这个问题?您可以在图中看到这一点 我的代码: public class Images extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVi

我正在创建gridview以显示图像。即使我设置了垂直和水平间距,静止图像也会相互重叠。为什么会这样?如何解决这个问题?您可以在图中看到这一点

我的代码:

public class Images extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.images);

        GridView gridView = (GridView) findViewById(R.id.grid_view);
        gridView.setAdapter(new ImageAdapter(this));
        gridView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
                Intent i = new Intent(getApplicationContext(), FullImageActivity.class);
                i.putExtra("id", position);
                startActivity(i);
            }
        });
    }

    public class ImageAdapter extends BaseAdapter {

        private Context mContext; 
        int width, height;

        public Integer[] mThumbIds = {
                R.drawable.radhe, R.drawable.radhe,
                R.drawable.radhe, R.drawable.radhe,
                R.drawable.radhe, R.drawable.radhe,
                R.drawable.radhe, R.drawable.radhe,
                R.drawable.radhe
        };

        // Constructor
        public ImageAdapter(Context c){
            mContext = c;
        }

        @Override
        public int getCount() {
            return mThumbIds.length;
        }

        @Override
        public Object getItem(int position) {
            return mThumbIds[position];
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            ImageView imageView = new ImageView(mContext);
            DisplayMetrics displaymetrics = new DisplayMetrics();
            getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
            width = displaymetrics.widthPixels;
            height = displaymetrics.heightPixels;
            imageView.setLayoutParams(new GridView.LayoutParams(width/3, height/3));
            imageView.setScaleType(ScaleType.FIT_XY);
            imageView.setImageResource(mThumbIds[position]);
            return imageView;
        }
    }
}
公共类图像扩展活动{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.images);
GridView GridView=(GridView)findViewById(R.id.grid\u视图);
setAdapter(新的ImageAdapter(this));
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图v、整型位置、长id){
Intent i=新的Intent(getApplicationContext(),FullImageActivity.class);
i、 putExtra(“id”,位置);
星触觉(i);
}
});
}
公共类ImageAdapter扩展了BaseAdapter{
私有上下文;
int宽度、高度;
公共整数[]mThumbIds={
R.drawable.radhe,R.drawable.radhe,
R.drawable.radhe,R.drawable.radhe,
R.drawable.radhe,R.drawable.radhe,
R.drawable.radhe,R.drawable.radhe,
拉德雷
};
//建造师
公共图像适配器(上下文c){
mContext=c;
}
@凌驾
public int getCount(){
返回mThumbIds.length;
}
@凌驾
公共对象getItem(int位置){
返回mThumbIds[位置];
}
@凌驾
公共长getItemId(int位置){
返回0;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
ImageView ImageView=新的ImageView(mContext);
DisplayMetrics DisplayMetrics=新的DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
宽度=displaymetrics.widthPixels;
高度=displaymetrics.heightPixels;
setLayoutParams(新的GridView.LayoutParams(宽度/3,高度/3));
imageView.setScaleType(ScaleType.FIT_XY);
setImageResource(mThumbIds[position]);
返回图像视图;
}
}
}
Xml:


这是我得到的输出


在下面使用了代码片段,而不是您使用的代码片段:

<GridView 
    android:id="@+id/gv_Grid" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:columnWidth="90dp"
    android:numColumns="3" 
    android:verticalSpacing="60dip"
    android:horizontalSpacing="10dip"
    android:stretchMode="columnWidth"
    android:gravity="center" 
    android:layout_below="@+id/rr_grid_titleBar" /> 


谢谢

请使用
imageView.setPadding(20,20,20,20)。填充为网格项目(图像视图)提供了一些空间,它们看起来是分开的。

不要使用和高度对
ImageView
进行硬编码。您正在这里硬编码
新建GridView.LayoutParams(宽度/3,高度/3)
@GopalRao那么如何做呢?我必须使用float?使用
新建GridView.LayoutParams(GridView.LayoutParams.WRAP_内容,GridView.LayoutParams.WRAP_内容)
并使用
android:columnWidth=“90dp”
,正如Aashish Systemix建议的那样我不想使用列宽。因为在某些屏幕尺寸上使用此选项显示不正确。请使用
网格视图的宽度,而不是屏幕宽度。在计算宽度时,需要考虑水平间距。不要硬编码高度。将其设置为
WRAP\u CONTENT
。。。
<GridView 
    android:id="@+id/gv_Grid" 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" 
    android:columnWidth="90dp"
    android:numColumns="3" 
    android:verticalSpacing="60dip"
    android:horizontalSpacing="10dip"
    android:stretchMode="columnWidth"
    android:gravity="center" 
    android:layout_below="@+id/rr_grid_titleBar" />