我正在将图片加载到ImageView
。 ImageView
包含在FrameLayout
中。加载图像按预期工作,但现在我想设置FrameLayout
的边距以匹配加载图像的大小,因为我将其他视图添加到FrameLayout
作为图像的叠加层。
为此,我在实用程序类中创建了一个静态方法,该方法与包含FrameLayout
和ImageView
的类不同。在utilityclass
中运行该方法时,它会从以下代码中显示的行中转出应用,该代码会尝试获取LayoutParams
的{{1}}。
由于我没有收到错误消息,我发现很难理解错误。任何人都可以指出我正确的方向。
将处理图像加载的代码作为结果的活动
FrameLayout
这段代码是调用的新方法,导致崩溃\ app闭包。
case REQUEST_OPEN_GALLERY:
if (resultCode == RESULT_OK && null != data) {
getSelectedFileFromGallery(data);
// This block is the new code to apply the layoutParams
FrameLayout fLayout = (FrameLayout) findViewById(R.id.image_Layout);
ImageView iView = (ImageView) findViewById(R.id.image_View);
Utils.addMarginsToImageContainer(fLayout, iView);
//End of the new block
toggleViewStatus(ENABLE_OVERLAY_VIEWS); //Enable the text and overlay control
}
break;
我不确定是否有人需要任何额外的代码部分,但如果是,请告诉我,我会发布它们。非常感谢任何帮助。
更新 - 我刚刚意识到运行应用程序而不是在手机上进行调试会引发错误。错误是
发送失败结果ResultInfo {who = null,request = 2,result = -1, data = Intent {dat = content:// media / external / images / media / 3377 flg = 0x1 活动myActivity java.lang.ClassCastException: android.widget.RelativeLayout $ LayoutParams无法强制转换为 android.widget.FrameLayout $的LayoutParams
考虑到这一点,可能需要注意framelayout包含在RelativeLayout中。但是,为什么系统将framelayout参数转换为相对布局的参数,我还不明白。
答案 0 :(得分:0)
我很确定在此之前我已经看过实际的错误消息(添加为原始帖子的编辑)。我通过更改行
解决了这个问题FrameLayout.LayoutParams fLayoutLayoutParams = (FrameLayout.LayoutParams) fLayout.getLayoutParams();
使用RelativeLayout Params代替,例如
RelativeLayout.LayoutParams fLayoutLayoutParams = (RelativeLayout.LayoutParams) fLayout.getLayoutParams();
至于为什么你需要顶级父视图的布局参数而不是我实际上试图影响的视图的布局参数的原因。我认为这个问题已经得到了更好的回答,在这个阶段我并不完全理解。