Java android在触摸和移动时获取按钮文本

Java android在触摸和移动时获取按钮文本,java,android,button,ontouchlistener,Java,Android,Button,Ontouchlistener,我有一个4个按钮和文本视图布局,并将通过选择字母创建一个单词来制作一个小游戏 我的问题是如何在一次触摸中获得多个按钮值并移动到按钮上?我尝试了这个代码,但每次触摸只得到一个值,而当移动时,其他按钮没有任何值 布局 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http:

我有一个4个按钮和文本视图布局,并将通过选择字母创建一个单词来制作一个小游戏

我的问题是如何在一次触摸中获得多个按钮值并移动到按钮上?我尝试了这个代码,但每次触摸只得到一个值,而当移动时,其他按钮没有任何值

布局

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:id="@+id/txtresult"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="102dp"
        android:textColor="@android:color/holo_red_dark"
        android:textSize="30sp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/btn1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="25dp"
        android:text="A" />

    <Button
        android:id="@+id/btn2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="160dp"
        android:text="T" />

    <Button
        android:id="@+id/btn3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="90dp"
        android:text="C" />

    <Button
        android:id="@+id/btn4"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="82dp"
        android:text="F" />

</RelativeLayout>
结果应该是这样的:


我认为您应该在布局视图上设置一个触摸监听器,尝试获取X和Y,并检测触摸点的X和Y是否在按钮上


看看这是我的主意,试试看

@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
    if (motionEvent.getAction() == MotionEvent.ACTION_DOWN || motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
        if(get_letter(motionEvent.getX(), motionEvent.getY() != "")
            result.append(get_letter(motionEvent.getX(), motionEvent.getY());
    }
}

private String get_letter(float x, float y) {
    if(is_contain(x, y, btn1)) return btn1.getText();
    else if(is_contain(x, y, btn2)) return btn2.getText();
    else if(is_contain(x, y, btn3)) return btn3.getText();
    else if(is_contain(x, y, btn4)) return btn4.getText();
    else return "";
}

private boolean is_contain(float x, float y, Button view) {
    RectF rect = new RectF();
    view.getHitRect(rect);
    return rect..contains((int)x, (int)y);
}

你的方法有什么问题?应该这样做,不是吗?如果possible@KrishnaSharma问题当我触摸例如“C”时得到字母C,当移动到另一个字母如“A”时没有得到任何东西我想得到任何字母当我移动到你的代码时,我可以得到底部结果文本视图中的所有字母。我按C texresult值“C”,然后按现在的texresult值“CA”,依此类推。。。请举例说明您的要求。@menasoft:您解决问题了吗?@user1090751通过此问题回答“是”
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
    if (motionEvent.getAction() == MotionEvent.ACTION_DOWN || motionEvent.getAction() == MotionEvent.ACTION_MOVE) {
        if(get_letter(motionEvent.getX(), motionEvent.getY() != "")
            result.append(get_letter(motionEvent.getX(), motionEvent.getY());
    }
}

private String get_letter(float x, float y) {
    if(is_contain(x, y, btn1)) return btn1.getText();
    else if(is_contain(x, y, btn2)) return btn2.getText();
    else if(is_contain(x, y, btn3)) return btn3.getText();
    else if(is_contain(x, y, btn4)) return btn4.getText();
    else return "";
}

private boolean is_contain(float x, float y, Button view) {
    RectF rect = new RectF();
    view.getHitRect(rect);
    return rect..contains((int)x, (int)y);
}