Android-GridView Padding problem
GridView
... My problem now is
when im using the imageView.setPadding(10,10,10,10)
its working fine for HTC Hero but in case of Motorola Droid they are overlapping each other...
How to make the padding to be common for all mobile...
Here is my code..
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;
}
}
I have also tried to use the
int w = gridView.getWidth();
int myViewWidth = Math.round(W * .12f);
and also i tried with the
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.FILL_PAREN开发者_开发百科T);
lp.setMargins(left, top, right, bottom);
imageView.setLayoutParams(lp);
So is there anyother way to do.. Or am i wrong anywhere.. Help me out..
Thanks in advance.
Rather defining the padding in pixels
, you need to define it in dips
(density independent pixels) and then convert the dips
to pixels
at run time.
So you would need to do something similar to
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);
}
...
}
...
The scale
you get in your constructor will differ depending on the density of the screen of the device your app is running on.
(Note: dip
and dp
are the same thing)
精彩评论