我正在尝试根据FrameLayout
设置Bitmap
的宽度和高度,我在下面做了
Bitmap theBitmap = BitmapFactory.decodeFile(theFileImage.toString());
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(theBitmap.getWidth(), theBitmap.getHeight());
frame.setLayoutParams(lp);
image.setLayoutParams(lp);
image.setImageBitmap(theBitmap);
但我得到ClassCastException
。
我做错了什么?
编辑:
java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams
答案 0 :(得分:15)
要设置布局参数,您需要使用其父级的内部类LayoutParams。
例如:如果在RelativeLayout中有一个LinearLayout,并且需要设置Linear Layout的布局参数,则需要使用RelativeLayout的LayoutParams内部类。否则它会产生ClassCastException。
因此,在您的情况下,要设置FrameLayout的Layoutparams,您需要使用其父布局的布局参数。假设您的布局如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<FrameLayout
android:id="@+id/flContainer"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
</FrameLayout>
</RelativeLayout>
代码:
FrameLayout frame=(FrameLayout) findViewById(R.id.flContainer);
ImageView image=(ImageView) findViewById(R.id.image);
Bitmap theBitmap = BitmapFactory.decodeFile(theFileImage.toString());
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(theBitmap.getWidth(), theBitmap.getHeight());
frame.setLayoutParams(lp);
image.setImageBitmap(theBitmap);
答案 1 :(得分:1)
看到ClassCastException
我认为你在这里做了一些非法行为,有几个问题,框架和图片是什么?
如果frame是对FrameLayout的引用,则必须使用
FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(theBitmap.getWidth(), theBitmap.getHeight());
如果有帮助,请告诉我。