マルチスレッドでUIいじったら駄目だってこと
えーそれで、マルチスレッドでUIいじったら駄目(Only the original thread that created a view hierarchy can touch its views.)とか言われて、要は何かつうと、スレッドの中からUIいじっちゃ駄目らしいのでHandlerってのを使うらしいです。
こういうのは駄目だった気がする
new Thread( public void run() { LayoutParams param = new ViewGroup.getLeayoutParams(50.50); mView.setLayoutParams(param); } }).start();
で
private final Handler handler=new Handler(); (new Thread(){ public void run() { handler.post(new Runnable(){ public void run() { LayoutParams param = new ViewGroup.getLeayoutParams(50.50); mView.setLayoutParams(param); } }); } }).start();
たぶんこんな感じで動いたんだけれど、動いていないんだけれど、
setLayoutParamsをHandlerの中でやりたいんだけれど、そもそも、Handler中とか関係無しに、LayoutにaddViewしたあととか、setContentViewした後ってsetLayoutParams出来ないんだっけぇ??
java.lang.ClassCastException: android.view.ViewGroup$LayoutParams
ってのが出る、1.6だとでる。それ以外は面倒だから調べていない。
んで解った。
(new Thread(){ public void run() { handler.post(new Runnable(){ public void run() { //LayoutParams param = new ViewGroup.getLeayoutParams(50.50); LayoutParams param = mView.getLayoutParams(); mView.setLayoutParams(param); } }); } }).start();
で、動いた。使っているのはLinearLayoutなんだけれど、LinearLayoutはViewGroupを継承しているから、いけると思ったんだkれど駄目だった。素直にViewからLayoutParamsを取得してパラメタ設定するのがいいと思う