フルスクリーンのFrameLayoutの中に小さなImageViewがあります.FrameLayoutをタッチすると画像ビューその位置に移動します。setLayoutParamsでタッチイベントでImageViewを移動しようとしたとき、imageviewが動いていない
私はImageViewを動かすことに関して私が見つけることができる他のすべての質問を読んだが、なぜ私の解決策がまだ機能していないのか分からなかった。
でframeLayoutを拡張するカスタムビューで:
@Override
public boolean onInterceptTouchEvent(MotionEvent event){
if(event.getActionMasked() == MotionEvent.ACTION_DOWN){
ImageView iv = (ImageView) this.findViewById(R.id.draggedImage);
FrameLayout.LayoutParams params = (LayoutParams) iv.getLayoutParams();
params.leftMargin = (int) event.getX();
params.bottomMargin = (int) event.getY();
iv.setLayoutParams(params);
iv.invalidate();
invalidate();
}
return true;
}
私は(私がやるべきことこれらのかわからない)新しいタッチ位置を反映するlayoutparamsマージンを変更し、ImageViewのとでframeLayoutを無効にしましたしかし、imageViewは揺れません(フレームの左上隅に常に座っています)。
また、私が画面に触れて、真のX値とY値でパラメータが設定されているときに、このメソッドが呼び出されていることを確認しました。
マイレイアウト:
<CustomFrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<!-- some other unrelated views -->
<ImageView
android:id="@+id/draggedImage"
android:layout_width="100dp"
android:layout_height="100dp"
android:src="@drawable/pause" />
</CustomFrameLayout>
編集: は、私はAPIレベル10をターゲットにしようとしていることに言及しているなら、私はハニカムビューの向きの良さ:(
パディングの変更はうまくいくと思いますが、それは私にとってはちょっと変わっています。パディングを変更して移動するには、単に画像ビューを移動するのではなく、画像ビュー全体を画面全体に塗りつぶす必要があります。これは解決策かもしれませんが、私はちょうどビューを移動したいと思っています。 – Tim
償却された絶対レイアウトの代替案を見つけようとしているときに、私はたくさんの検索をしました。一般的なコンセンサスはフレームレイアウトを使用し、パディングで位置を設定することでした。もし誰かがより良い方法を持っていれば、私はそれを聞くのが大好きです。 – cstrutton