我的ImageView在x轴上匹配屏幕尺寸,并在我的布局中使用 y轴上的剩余空间。我想在ImageView中创建与ImageView大小完全相同的位图。请问怎么样?可以通过一些自动设置来完成,我应该调用一些度量函数吗?
我尝试过SetAdjustViewBounds(),但它对我没用。
创建足够大的位图(我不喜欢这样的内存浪费)并且设置SetScaleType(ImageView.ScaleType.Matrix)可以正常工作,但是当我在画布上进行绘图操作时,我不知道应该绘制的区域的实际大小,画布和位图高度都等于yScreen,而imgWeekView高度假装为0,即使它用灰色绘制整个所需区域。 / p>
npm version
答案 0 :(得分:0)
最后,我找到了一种方法来测量我的ImageView,在这里我将发布我的答案。
我相信应该有更容易的解决方案,但也许没有。从这个问题我得到了大部分重要数据:
How to get the width and height of an android.widget.ImageView?
在我的Android应用程序中,事情看起来有点不同,我没有足够的经验来说明原因。我不得不改变一点。我必须学习一些关于接口的知识,这个问题也有帮助。
Implementing the View.IOnTouchListener interface
这是我如何结合的东西。首先,我创建了将要执行该测量的类。
public class MyPredrawListener : Java.Lang.Object, ViewTreeObserver.IOnPreDrawListener
{
ImageView imageView;
public MyPredrawListener(ImageView img)
{
imageView = img;
}
public bool OnPreDraw()
{
imageView.ViewTreeObserver.RemoveOnPreDrawListener(this);
int finalHeight = imageView.MeasuredHeight;
int finalWidth = imageView.MeasuredWidth;
Bitmap bitmap = Bitmap.CreateBitmap(finalWidth, finalHeight, Bitmap.Config.Argb8888);
imageView.SetImageBitmap(bitmap);
//Test to see result
Canvas cnv = new Canvas(bitmap);
Paint paint = new Paint();
paint.Color = new Color(255, 255, 0);
cnv.DrawColor(new Color(128, 128, 128));
cnv.DrawCircle(finalWidth-50, finalHeight-50, 50, paint);
return true;
}
}
在我创建imageView的代码中,我设置了这样的监听器。
imgWeekView = new ImageView(context);
MyPredrawListener listener=new MyPredrawListener(imgWeekView);
imgWeekView.ViewTreeObserver.AddOnPreDrawListener(listener);
在OnPreDraw函数中,我输入测试代码以图形方式查看结果,将位图清除为灰色并在视图的右下方绘制黄色圆圈。