直接在XML中控制宽高和其他的view一样都是这样
<ImageView android:layout_width="200dp"
android:layout_height="200dp"/>
直接用代码控制View宽高的话可以LayoutParams,但是对ImageView好像不顶用啊
for (int i = 0; i < contentImages.size(); i++) {
Bitmap bmp = contentImages.get(i);
ImageView imageView = new ImageView(mInflater.getContext());
imageView.setScaleType(ImageView.ScaleType.CENTER);
imageView.setPadding(5, 5, 5, 5);
imageView.setBackgroundColor(Color.RED);
imageView.setLayoutParams(new ViewGroup.LayoutParams(200,200));
imageView.setImageBitmap(bmp);
GridLayout.Spec rowSpec = GridLayout.spec(i / 3);
GridLayout.Spec columnSpec = GridLayout.spec(i % 3);
GridLayout.LayoutParams paramsGl = new GridLayout.LayoutParams(rowSpec,columnSpec);
contentImageGrid.addView(imageView, paramsGl);
}
上面这段代码,
是在GridLayout中动态增加ImageView,
但生成ImageView大小都是自适应Bitmap大小的,而不是200*200的。
------解决思路----------------------
利用getLayoutParams()方法 和 setLayoutParams()方法 重新 设置 控件的 布局,
1、首先利用getLayoutParams()方法,获取控件的LayoutParams。
eg:LayoutParamslaParams=(LayoutParams)imageView.getLayoutParams();
2、设置该控件的layoutParams参数
eg:
laParams.height=200;
laParams.width=100;
3、将修改好的layoutParams设置为该控件的layoutParams.
eg:imageView.setLayoutParams(laParams);
------解决思路----------------------
imageview特殊,用imagebutton或者button都行
------解决思路----------------------
GridLayout好像不接受ViewGroup.LayoutParams(200,200)这种属性
用RelativeLayout试试
------解决思路----------------------
public synchronized void setmark(ImageView view,double d)
{
int width=237;
int mask=(int) (237*d);
LayoutParams params=view.getLayoutParams();
params.width=width-mask;
view.setLayoutParams(params);
view.setVisibility(View.VISIBLE);
// view.postInvalidate();
}
这样是可以滴
------解决思路----------------------
直接用数字的话,可能默认单位就不是 dp 了,这个是我曾经用的换算方法
static float fzoom = 0f;
/**
* 计算按照屏幕比例缩放后的尺寸
* @param context
* @param size
* @return
*/
public static int zoom(Activity context, int size){
if(fzoom == 0f){
WindowManager windowManager = context.getWindowManager();
Display display = windowManager.getDefaultDisplay();
DisplayMetrics metrics = new DisplayMetrics();
display.getMetrics(metrics);
fzoom = metrics.density;
}
return (int)(size * fzoom);
}
------解决思路----------------------
直接用数字是像素的,要自己转dp
------解决思路----------------------
设置layoutParams
imageview.getLayutParams.height=高度
imageview.getLayutParams.width=宽度
高度,宽度根据DisplayMetrics获得的数据,进行等比例计算就可以了。
int width = dm.widthPixels;
int height = dm.heightPixels;
高度=(int)200.0/参照比例*height.(如:参照比例是:640)
如果宽高等比例,宽高的计算都使用相同参照,如:都用height进行计算或都用width进行计算。