上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[Android] ImageViewのサイズをLayoutParamsで指定しようとしたら例外に。。。

ImageViewのサイズを変更したく、LayoutParamsを使ってサイズ変換かけたら例外が発生した・・・


LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(width / 2, height/2);
mImageView.setLayoutParams(lp);



06-15 10:01:14.830: E/AndroidRuntime(16833): FATAL EXCEPTION: main
06-15 10:01:14.830: E/AndroidRuntime(16833): java.lang.ClassCastException: android.view.ViewGroup$LayoutParams
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3123)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.view.View.measure(View.java:8183)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.view.View.measure(View.java:8183)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.widget.LinearLayout.measureVertical(LinearLayout.java:526)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.view.View.measure(View.java:8183)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.view.View.measure(View.java:8183)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.os.Handler.dispatchMessage(Handler.java:99)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.os.Looper.loop(Looper.java:123)
06-15 10:01:14.830: E/AndroidRuntime(16833): at android.app.ActivityThread.main(ActivityThread.java:4627)
06-15 10:01:14.830: E/AndroidRuntime(16833): at java.lang.reflect.Method.invokeNative(Native Method)
06-15 10:01:14.830: E/AndroidRuntime(16833): at java.lang.reflect.Method.invoke(Method.java:521)
06-15 10:01:14.830: E/AndroidRuntime(16833): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
06-15 10:01:14.830: E/AndroidRuntime(16833): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
06-15 10:01:14.830: E/AndroidRuntime(16833): at dalvik.system.NativeStart.main(Native Method)




対応方法を探してたら、以下に「LinearLayout.LayoutParamsにしないと例外になるよ」という記事を発見。
ImageViewのLayoutParamsって…Add Star

さっそく修正。


LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(width / 2, height/2);
mImageView.setLayoutParams(lp);



06-15 10:10:52.920: E/AndroidRuntime(17671): FATAL EXCEPTION: main
06-15 10:10:52.920: E/AndroidRuntime(17671): java.lang.ClassCastException: android.widget.LinearLayout$LayoutParams
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.widget.FrameLayout.onLayout(FrameLayout.java:288)
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.view.View.layout(View.java:7047)
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.view.View.layout(View.java:7047)
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1249)
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1125)
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.widget.LinearLayout.onLayout(LinearLayout.java:1042)
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.view.View.layout(View.java:7047)
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.widget.FrameLayout.onLayout(FrameLayout.java:333)
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.view.View.layout(View.java:7047)
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.view.ViewRoot.performTraversals(ViewRoot.java:1045)
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.os.Handler.dispatchMessage(Handler.java:99)
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.os.Looper.loop(Looper.java:123)
06-15 10:10:52.920: E/AndroidRuntime(17671): at android.app.ActivityThread.main(ActivityThread.java:4627)
06-15 10:10:52.920: E/AndroidRuntime(17671): at java.lang.reflect.Method.invokeNative(Native Method)
06-15 10:10:52.920: E/AndroidRuntime(17671): at java.lang.reflect.Method.invoke(Method.java:521)
06-15 10:10:52.920: E/AndroidRuntime(17671): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)
06-15 10:10:52.920: E/AndroidRuntime(17671): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:636)
06-15 10:10:52.920: E/AndroidRuntime(17671): at dalvik.system.NativeStart.main(Native Method)



直ってない。。。
で、結果として LinearLayout.LayoutParams から FrameLayout.LayoutParams に変更したところ問題なく動くようになりました。


FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(width / 2, height/2);
mImageView.setLayoutParams(lp);




コメントの投稿

非公開コメント

プロフィール

hiiro

Author:hiiro

最新記事
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
Counter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。