2017-10-21 64 views
0

Ce que j'essaie de faire est lorsque vous cliquez sur l'un des boutons fléchés affichés dans l'image, le texte utilisateur TextView se déplace un peu dans la direction respective. Pour une raison quelconque, en utilisant le code Java ci-dessous lorsque je clique sur les boutons, le texte se déplace tout le chemin jusqu'au bord absolu de l'écran. Je n'étais pas sûr de ce qui se passait, alors j'ai décidé d'essayer d'utiliser user_text.getX() and user_text.getY() pour obtenir leurs coordonnées X et Y, mais cela n'a rien fait. Après un peu de recherche, j'ai trouvé que j'aurais dû utiliser user_text.getLeft() and user_text.getTop() and/or user_text.getWidth(). Après avoir essayé ceux-ci, la section android monitor/debug du studio a dit que ces chiffres étaient 0. Je ne sais pas pourquoi c'est arrivé, mais si quelqu'un pouvait me dire ce que je devais faire à la place ou comment l'obtenir à chaque fois que vous cliquez sur le bouton qu'il déplace, ce serait grandement apprécié.Déplacement de la vue de texte à l'aide des boutons Android

Merci

P.S. Je l'ai écrit sur l'image si vous voulez savoir ce qui est ID-ed comme user_text

reference image

Mon code XML correspondant:

<TextView 
    android:id="@+id/user_text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_centerInParent="true" 
    android:textColor="@android:color/black" 
    android:textSize="18sp" 
    android:elevation="20dp" 
    android:paddingBottom="120dp" /> 
    . <--- that is supposed to represent that there's other non-relevant code in between 
    . 
    . 

<RelativeLayout 
    android:id="@+id/move_Group" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_marginBottom="5dp" 
    android:layout_centerInParent="true" 
    android:visibility="visible" 
    android:gravity="center"> 

    <Button 
     android:id="@+id/move_left" 
     android:layout_width="50dp" 
     android:layout_height="wrap_content" 
     android:background="@mipmap/arrow" 
     android:rotation="-90" 
     android:layout_marginRight="20dp" 
     android:onClick="moveLeft"/> 

    <Button 
     android:id="@+id/move_up" 
     android:layout_width="50dp" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/move_left" 
     android:background="@mipmap/arrow" 
     android:layout_marginRight="20dp" 
     android:onClick="moveUp"/> 

    <Button 
     android:id="@+id/move_down" 
     android:layout_width="50dp" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/move_up" 
     android:background="@mipmap/arrow" 
     android:rotation="180" 
     android:layout_marginRight="20dp" 
     android:onClick="moveDown"/> 

    <Button 
     android:id="@+id/move_right" 
     android:layout_width="50dp" 
     android:layout_height="wrap_content" 
     android:layout_toRightOf="@id/move_down" 
     android:background="@mipmap/arrow" 
     android:rotation="90" 
     android:layout_marginRight="20dp" 
     android:onClick="moveRight"/> 

    <TextView 
     android:id="@+id/move" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="MOVE" 
     android:textSize="20sp" 
     android:layout_toRightOf="@id/move_right" 
     android:textColor="@android:color/black"/> 

</RelativeLayout> 

Mon code Java correspondant:

TextView user_text = (TextView) findViewById(R.id.user_text); 
. 
. 
. 
public void moveLeft(View view) 
{ 
    user_text.setX(userX + 10); 
} 

public void moveUp(View view) 
{ 
    user_text.setY(userY + 10); 
} 

public void moveDown(View view) 
{ 
    user_text.setY(userY - 10); 
} 

public void moveRight(View view) 
{ 
    user_text.setX(userX - 10); 
} 

Répondre

2

Obtenir X et Y actuels de user_text dans la fonction de clic.

public void moveLeft(View view) 
{ 
     user_text.setX(user_text.getX() - 10); 
} 

lorsque vous déplacez vers le haut: Y = Y - delta.

public void moveUp(View view) 
{ 
     user_text.setY(user_text.getY() - 10); 
} 

quand déplacer vers le bas: Y = Y + delta

public void moveDown(View view) 
{ 
    user_text.setY(user_text.getY() + 10); 
} 

Ceci est par exemple dans MainActivity.java. Je vois cela fonctionne

public class MainActivity extends AppCompatActivity { 

    TextView user_text; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     user_text = (TextView) findViewById(R.id.user_text); 

    } 

    public void moveLeft(View view) 
    { 
     user_text.setX(user_text.getX() - 10); 
    } 

    public void moveUp(View view) 
    { 
     user_text.setY(user_text.getY() - 10); 

    } 

    public void moveDown(View view) 
    { 
     user_text.setY(user_text.getY() + 10); 

    } 

    public void moveRight(View view) 
    { 
     user_text.setX(user_text.getX() + 10); 
    } 
} 
+0

S'il vous plaît laissez quelques explications – tan