Android ImageView:在保持视图大小的同时替换图像(可绘制)
简而言之Android ImageView:在保持视图大小的同时替换图像(可绘制),android,android-layout,imageview,android-imageview,android-drawable,Android,Android Layout,Imageview,Android Imageview,Android Drawable,简而言之 我有一个ImageView,大小设置为wrap\u content 图像已经设置了一个可绘制的,一切看起来都很棒。 现在,我想更改可绘制的,同时强制图像视图保持其大小 perfectlyMadeNewMapButtonImageView.setImageDrawable(mLoadingDrawable); //mLoadingDrawable.setBounds( // perfectlyMadeNewMapButtonImageView.getDrawable().getBoun
我有一个
ImageView
,大小设置为wrap\u content
图像已经设置了一个
可绘制的,一切看起来都很棒。
现在,我想更改可绘制的
,同时强制图像视图
保持其大小
perfectlyMadeNewMapButtonImageView.setImageDrawable(mLoadingDrawable);
//mLoadingDrawable.setBounds(
// perfectlyMadeNewMapButtonImageView.getDrawable().getBounds());
// not working
解释
当然,简单的答案是将宽度和高度设置为固定大小。
但在我的例子中,我正在从谷歌地图
复制图像视图
+布局,以添加我的自定义地图按钮。它工作得很好,因为我有一个大小相同的图标。
现在我想更改一下图标(加载图标btw),但由于可绘制的
源文件较大,它相应地更改了图像视图的大小。
ScaleType
不起作用,因为宽度和高度不固定
我所尝试的
1.在旧边界上使用getBounds
设置新的Drawable
边界。
2. setRight()
在ImageView
上,使用现有地图按钮的右边界(不变的原始地图按钮)。
(左侧已被修复,它位于RelativeLayout
中)
我如何创建新按钮的一些(工作)代码
ImageView newBtn = new ImageView(context);
newBtn.setAdjustViewBounds(false);
newBtn.setBackgroundResource(R.drawable.map_btn_background);
newBtn.setScaleType(ScaleType.CENTER_INSIDE);
newBtn.setImageResource(imageResId);
newBtn.setClickable(true);
RelativeLayout.LayoutParams rlp = (RelativeLayout.LayoutParams) locationBtn.getLayoutParams();
rlp = copyRelativeLayoutParams(rlp);
//add to Google's map button layout
btnContainer.addView(newBtn, rlp);
一些(不工作)代码关于我如何更改可绘图文件。
这就是我希望ImageView
保持其大小的要点
perfectlyMadeNewMapButtonImageView.setImageDrawable(mLoadingDrawable);
//mLoadingDrawable.setBounds(
// perfectlyMadeNewMapButtonImageView.getDrawable().getBounds());
// not working