2017-06-28 7 views
0

アーチェリーターゲットのような画像ビューを持つ制約レイアウトがあります。タッチイベントでは、ユーザーがターゲットを押したときに別のイメージ(箇条書き)を配置しようとしています。しかし、私は正しい画像の上部のアライメントを調整することしかできませんが、ビューを水平に調整することはできません。常に左に調整されて終了します。何が間違っているの?座標は100%OKです、私は値をハードコーディングしようとしましたが運はありませんでした。ConstraintLayoutを使用してプログラムでビューを配置できません

target.setOnTouchListener(new View.OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      Matrix inverse = new Matrix(); 
      imageView.getImageMatrix().invert(inverse); 
      float[] touchPoint = new float[]{event.getX(), event.getY()}; 
      inverse.mapPoints(touchPoint); 
      int x = (int) touchPoint[0]; 
      int y = (int) touchPoint[1]; 

      ConstraintSet set = new ConstraintSet(); 
      ImageView view = new ImageView(this); 
      ConstraintLayout.LayoutParams vp = 
       new ConstraintLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, 
         ViewGroup.LayoutParams.WRAP_CONTENT); 
      Bitmap bm = BitmapFactory.decodeResource(getResources(), 
       R.drawable.bullet); 
      view.setImageBitmap(bm); 
      layout.addView(view, 7, vp); 
      set.clone(layout); 
      set.connect(view.getId(), ConstraintSet.TOP, 
      target.getId(), ConstraintSet.TOP, (int) y - 60); 
      set.connect(view.getId(), ConstraintSet.LEFT, target.getId(), ConstraintSet.LEFT, (int) x); 
      set.applyTo(layout); 

     } 
    }); 
+0

解決済みの解答を参照してください。 – Cheticamp

答えて

0

あなたはこの問題に実行していることがあります。 62154545 ConstraintSet connect ignores right and left margins

ConstraintSet#を使用してTextViewを追加すると、XMLで定義された空のConstraintLayoutに接続すると、左右の余白が無視され(ゼロ)、上下の余白が無視されます。 TextViewの高さと幅は両方とも "MATCH_CONSTRAINT"に設定されています。次のコードとスクリーンショットを参照してください。これは、すべてがXMLで設定されている場合にうまく動作します。


はちょうどこの時、別の見ていました。 ConstraintSet.LEFTConstraintSet.RIGHTの代わりにConstraintSet.STARTConstraintSet.ENDを使用してください。私はちょうどそれを試して、それは正常に動作します。私はなぜ左右がうまくいかないのか言うことができません。

+0

これをお試しいただきありがとうございます。私はこれを緊急に解決するために相対的なレイアウトを使い終わった。 – Dodi

関連する問題