android中gridview中的图像重叠
我正在创建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
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" />