2017-06-28 6 views
0

platzieren Ich habe eine Constraint-Layout, das eine Bildansicht hat, die wie ein Bogenschießen Ziel ist. Bei Berührungsereignis versuche ich ein anderes Bild (eine Kugel) zu platzieren, wo der Benutzer auf das Ziel drückt. Allerdings kann ich nur die obere Ausrichtung des Bildes korrigieren, die korrekt ist, aber ich kann die Ansicht überhaupt nicht anpassen. Es endet immer nach links eingestellt. Was mache ich falsch? Die Koordinaten funktionieren 100% ok, ich habe sogar versucht, die Werte zu codieren, aber kein Glück.kann keine Sicht programmatisch mit 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

Siehe aktualisierte Antwort mit Lösung. – Cheticamp

Antwort

0

Sie können in diesem Thema ausgeführt werden: 62154545 ConstraintSet connect ignores right and left margins.

Beim Hinzufügen einer TextView mit ConstraintSet # connect zu einem leeren ConstraintLayout, das in XML definiert ist, werden linke und rechte Ränder ignoriert (sind Null), während obere und untere Ränder berücksichtigt werden. Die TextView-Höhe und -Breite werden beide auf "MATCH_CONSTRAINT" gesetzt. Sehen Sie sich den folgenden Code und Screenshot an. Dies funktioniert gut, wenn alles in XML eingestellt ist.


nahm nur noch einen Blick auf diese. Verwenden Sie ConstraintSet.START und ConstraintSet.END anstelle von ConstraintSet.LEFT und ConstraintSet.RIGHT. Ich habe es gerade ausprobiert und es funktioniert OK. Ich kann nicht sagen, warum links und rechts nicht funktionieren.

+0

Danke dafür werde ich es ausprobieren. Ich habe relatives Layout verwendet, um dieses Problem zu lösen. – Dodi

Verwandte Themen