0

プログラムで onCreate メソッドの LinearLayout に ImageView を追加したところ、正常に機能しました。

    img = new ImageView(this);
    img.setImageResource(R.drawable.source);
    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    params.setMargins(0, 50, 0, 0);
    img.setLayoutParams(params); 


  layout = (LinearLayout) findViewById(R.id.index_view);
            layout.addView(img);

そして、ユーザーが画面に触れたときに x 座標と y 座標を変更したいと考えています。
onTouch メソッド - ケース ACTION_MOVE:

    LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
params.setMargins(newX, newY, 0, 0);
img.setLayoutParams(params);

newX と newY は、ユーザーのタッチ座標に基づいて計算されます

しかし、このコードは正しく動作していないようです。タッチするたびに画像の幅を表示するトーストを作成しましたが、最初のタッチ後に幅がゼロに設定されていることがわかりました。これは私に教えてくれます:ImageViewが消えました。

推測はありますか?

4

1 に答える 1

2

newX, newYonTouch() で値を取得していることを確認したと仮定しています。あなたの目的はレイアウトパラメーターを編集することだと思いますが、それを行う代わりに、幅と高さを使用して新しいLayoutParams.WRAP_CONTENTパラメーターのセットを割り当て、マージンを設定しています。

最初に、次のように既存のパラメーターを取得しようとする場合があります。

LinearLayout.LayoutParams params =
 ( LinearLayout.LayoutParams) img.getLayoutParams();

次にマージンを変更します。

params.setMargins(newX, newY, 0, 0);
img.setLayoutParams(params);

試してみて、役立つかどうかを通知してください。そうでない場合は、さらに話すことができます。

于 2013-05-28T00:31:42.077 に答える