androidx.constraintlayout.widget.ConstraintLayout

我是 Android Studio 的新手,我只想拖动 TextView。但是,当我尝试获取RelativeLayout 的LayoutParams 时,我得到了一个我不使用的类(ContraintLayout) 的ClassCastException。


    import androidx.appcompat.app.AppCompatActivity;


    import android.os.Bundle;

    import android.view.MotionEvent;

    import android.view.View;

    import android.widget.RelativeLayout;

    import android.widget.TextView;


    public class MainActivity extends AppCompatActivity {


    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);


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

        textView.setOnTouchListener(onTouchListener());

    }


    private View.OnTouchListener onTouchListener(){

        return new View.OnTouchListener(){

            @Override

            public boolean onTouch(View view, MotionEvent event){

                final int x= (int)event.getRawX();

                final int y= (int)event.getRawY();

                RelativeLayout.LayoutParams params= (RelativeLayout.LayoutParams)view.getLayoutParams();//<--ERROR

                return true;

            }

        };

    }

}

这是错误消息


E/InputEventReceiver: Exception dispatching input event.

E/MessageQueue-JNI: Exception in MessageQueue callback: handleReceiveCallback

E/MessageQueue-JNI: java.lang.ClassCastException: androidx.constraintlayout.widget.ConstraintLayout$LayoutParams cannot be cast to android.widget.RelativeLayout$LayoutParams

    at com.example.test.MainActivity$1.onTouch(MainActivity.java:28)


大话西游666
浏览 177回答 1
1回答

千万里不及你

我想在你的activity_main.xml中你有ConstraintLayout,里面有TextView,所以你应该在你的java代码中使用ConstraintLayout.LayoutParams。或者您可以在activity_main.xml 中将ConstraintLayout 更改为RelativeLayout。这取决于您想要实现的目标
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java