2011-07-19 18 views
1

私はpageindexを実行しており、現在のページは矢印イメージ(imageview)で強調表示されます。relativelayoutで動的にビューを移動する

指数は25 textviewsとRelativeLayoutは、それに追加されます。

for (int i = 0; i < 25; i++) { 
     TextView tv = new TextView(this); 
     tv.setText(Integer.toString(i+1)); 
     tv.setGravity(Gravity.CENTER); 
     int id = 2000+i; 
     tv.setId(id); 
     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.FILL_PARENT); 
     if(i==0) 
      params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
     else 
      params.addRule(RelativeLayout.RIGHT_OF, prevViewId); 
     prevViewId = id; 
     rl.addView(tv,params); 
    } 

そして、私はページの変更をこのような何か:すべてが正しいよう

 RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
     params.addRule(RelativeLayout.ALIGN_BOTTOM, 2000+i); 
     params.addRule(RelativeLayout.ALIGN_RIGHT, 2000+i); 
     params.addRule(RelativeLayout.ALIGN_LEFT, 2000+i); 
     arrowImageView.setLayoutParams(params); 
     rl.requestLayout(); 
     rl.invalidate(); 

、私は矢印を配置することができます「スタートアップ」の任意のページで、ページが変更されたときに矢印は移動しません。私は、コードが実行され、すべてが正しいように見えますが、まだ矢印が最初の位置に止まっていることをデバッグして確認しました。 LayoutParamsを更新する代わりに、強制的に削除して新しい画像ビューを追加すると、矢印が完全に消えます。

答えて

1

私は同じ問題を抱えています。また、リファレンスレイアウト内で実行時に私の意見を移動したいと思います。だからもし誰かが助けてくれればそれは素晴らしいだろう。

私が考えているのは、矢印の位置が変更されていることですが、画面には更新されません。私が間違っている場合は私を訂正してください。私も同じ問題を抱えているので、これは私の推測です。

-edit- 私がうまくいくのは、最初に削除してから追加することです。 rl.removeView(tv); rl.addView(tv、params);

-edit- すべてUDEがしなければならない、そのようには...例えば を余白を変更されても、uが独自の変数に移動するビューのためのparamsを保存することができます:代わりのparamsの、それはそのことが持っています自分自身の名前 "arrowParams" それからそれを動かすだけです。arrowParams.leftMargin = 2000 + i;など...

関連する問題