2011-02-24 10 views
7

私はWebViewを "アニメーション化"してその内容をドロップして表示しようとしています。私は高さを1ずつ増やすハンドラを書きましたが、私はClassCastExceptionを実行しています。私は使用して だコードは次のとおりです。ラインwv.setLayoutParams(のparams)でレイアウトの高さをプログラム的に変更する、ClassCastException?

WebView.LayoutParams params = new WebView.LayoutParams(wv.getLayoutParams()); 
params.height = height; 
wv.setLayoutParams(params); 
height++; 
this.sleep(20); 

、私が取得:

java.lang.ClassCastException: android.widget.AbsoluteLayout$LayoutParams 

が、私はこれをどのように修正すればよいですか?

答えて

24

レイアウトパラメタは、ビューの親タイプである必要があります。たとえば、WebViewがLinearLayoutの内部にある場合は、LinearLayout.LayoutParamsを使用します。

+0

任意の手掛かり?現在の実装は、Androidのあまりエレガントでない側面のようです。 – satur9nine

+0

すべてのレイアウトが同じ機能をサポートしていないためです。 1つのLayoutParamsクラスを持つということは、ある種のマップを使用するか、可能なすべてのレイアウトパラメータ機能を詰め込むことを意味します。それは良くありません:) –

+0

個人的に私は実装の詳細を隠しているので、 "マップのいくつかの並べ替え"オプションを使用するのが好きです。 – satur9nine

0

以下は、アクティビティのサイズを設定するコードです。これがあなたの問題を解決することを願っています。私の場合、このコードは動作します。

WindowManager.LayoutParams params = getWindow().getAttributes();  
     params.height = 200; 
     params.width = 220;   

     this.getWindow().setAttributes(params); 
4

使用IT-

ViewGroup.LayoutParams vc=webview.getLayoutParams(); 
     vc.height=700; 
     vc.width=450; 

     webview.setLayoutParams(vc); 

それが動作するAndroidはすべてViewGroupsため、このようだけではなく、単一のLayoutParamsクラスをプログラムした理由として

+0

作業中かどうか – Ravi

+0

が私のために働いた。親の高さに合わせてどのように変更するのですか? – Guy

+0

ねえ、これの完全なコードを私に見せることができますか? – user2899094

関連する問題