2011-04-14 46 views
0


IM在一个应用程序的工作,其中IM加载图像到GridView ...我现在的问题是 时使用imageView.setPadding(10,10,10,10)其工作罚款的HTC Hero,但摩托罗拉Droid的他们情况IM相互重叠... 如何使填充到所有的移动是普通... 这里是我的代码..Android的GridView的填充问题

package com.android.sampleDesign1; 
import android.content.Context; 
import android.text.Layout; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.view.ViewGroup.LayoutParams; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.ImageView; 
import android.widget.Toast; 

public class TicTacToeAdapter extends BaseAdapter { 

public ImageView imageView; 

private Context mContext; 
private Integer mThumbIds = R.drawable.images;  

private Integer image; 

public TicTacToeAdapter(Context c) { 
    mContext = c; 

} 

public int getCount() { 
    return 9; 
} 

public Object getItem(int position) { 
    return position; 
} 

public long getItemId(int position) { 
    return position; 
} 



public View getView(int position, View convertView, ViewGroup parent) {  
    image = mThumbIds; 

    if (convertView == null) { 
     imageView = new ImageView(mContext); 
     imageView.setLayoutParams(new GridView.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setImageResource(image);    
     imageView.setPadding(10,10,10,10);   

    } else { 
     imageView = (ImageView) convertView;   
     imageView.setImageResource(image);   
    }    
    return imageView; 
    } 

} 

我也曾尝试使用
int w = gridView.getWidth(); int myViewWidth = Math.round(W * .12f);

,也是我试图与
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PARENT);
lp.setMargins(left, top, right, bottom);
imageView.setLayoutParams(lp);

那么,有没有任何其它办法做到..还是我错在任何地方.. 帮我..

谢谢提前。

回答

4

而是在pixels中定义填充,您需要在dips(与密度无关的像素)中对其进行定义,然后在运行时将dips转换为pixels

所以你需要做同样的事情到

private static final float PADDING_IN_DP = 10.0f; // 1 dip = 1 pixel on an MDPI device 
private final int mPaddingInPixels; 

public TicTacToeAdapter(Context context) { 
    .... 
    // Convert the dps to pixels 
    final float scale = context.getResources().getDisplayMetrics().density; 
    mPaddingInPixels = (int) (PADDING_IN_DP * scale + 0.5f); 
} 

... 
public View getView(int position, View convertView, ViewGroup parent) { 
    ... 
    if (convertView == null) { 
     ... 
     imageView.setPadding(mPaddingInPixels, mPaddingInPixels, mPaddingInPixels, mPaddingInPixels); 
    } 
    ... 
} 
... 

scale你在构造函数中会根据您的应用程序上运行的设备的屏幕密度不同得到的。

(注意:dipdp是一样的东西)