Установить высоту и ширину FrameLayout на основе растрового изображения

Я пытаюсь установить ширину и высоту 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 

Solutions Collecting From Web of "Установить высоту и ширину FrameLayout на основе растрового изображения"

Для установки параметров макета вам необходимо использовать внутренний класс LayoutParams своего родителя.

Например: если у вас есть LinearLayout внутри RelativeLayout, и если вам нужно установить параметры макета Linear Layout, вам нужно использовать внутренний класс LayoutParams RelativeLayout. Иначе это даст ClassCastException.

Поэтому в вашем случае для установки Layoutparams FrameLayout вам необходимо использовать его макет Layout Layout Params. Предположим, что ваш макет похож:

 <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); 

Видя ClassCastException я предполагаю, что вы делаете что-то незаконное здесь, пару вопросов, каковы рамки и изображения ?

Если фрейм является ссылкой на FrameLayout, вам придется использовать

FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(theBitmap.getWidth(), theBitmap.getHeight());

Дайте мне знать, если это поможет.