ImageView如何用代码控制大小

_XuDaojie 2015-06-11 10:42:13
直接在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的。
...全文
2050 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
开发者_android 2015-06-14
  • 打赏
  • 举报
回复
设置layoutParams imageview.getLayutParams.height=高度 imageview.getLayutParams.width=宽度 高度,宽度根据DisplayMetrics获得的数据,进行等比例计算就可以了。 int width = dm.widthPixels; int height = dm.heightPixels; 高度=(int)200.0/参照比例*height.(如:参照比例是:640) 如果宽高等比例,宽高的计算都使用相同参照,如:都用height进行计算或都用width进行计算。
  • 打赏
  • 举报
回复
直接用数字是像素的,要自己转dp
我不是很帅 2015-06-12
  • 打赏
  • 举报
回复
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(); } 这样是可以滴
Arnold9009 2015-06-12
  • 打赏
  • 举报
回复
GridLayout好像不接受ViewGroup.LayoutParams(200,200)这种属性 用RelativeLayout试试
tcmakebest 2015-06-12
  • 打赏
  • 举报
回复
直接用数字的话,可能默认单位就不是 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);
}
csdn_02 2015-06-12
  • 打赏
  • 举报
回复
imageview特殊,用imagebutton或者button都行
_XuDaojie 2015-06-12
  • 打赏
  • 举报
回复
引用 3 楼 Arnold9009 的回复:
GridLayout好像不接受ViewGroup.LayoutParams(200,200)这种属性 用RelativeLayout试试
可以的 终于把这个坑给填上了

for (int i = 0; i < contentImages.size(); i++) {
                Bitmap bmp = contentImages.get(i);

                ImageView imageView = new ImageView(mInflater.getContext());
                imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
                imageView.setPadding(5, 5, 5, 5);
                imageView.setBackgroundColor(Color.RED);
                imageView.setImageBitmap(bmp);

                GridLayout.Spec rowSpec = GridLayout.spec(i / 3);
                GridLayout.Spec columnSpec = GridLayout.spec(i % 3);
                //设置宽高要在这
                GridLayout.LayoutParams paramsGl = new GridLayout.LayoutParams(new ViewGroup.LayoutParams(200,200));
                paramsGl.rowSpec = rowSpec;
                paramsGl.columnSpec = columnSpec;

                contentImageGrid.addView(imageView, paramsGl);
            }
_XuDaojie 2015-06-12
  • 打赏
  • 举报
回复
引用 1 楼 u013377714 的回复:
利用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);
这个不行的我刚new出来的ImageView,他的LayoutParams都还是null的
水的川 2015-06-11
  • 打赏
  • 举报
回复
利用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);

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧