我有一个包含 TextView 的 FrameLayout,我将 OnTouchListener 添加到 FrameLayout 以执行 translateX 工作。然后我将 OnClickListener 添加到 TextView 以更改文本。然后 FrameLayout 不能 translateX。
如何解决这个冲突?我希望 TextView 可以执行单击操作,而 FrameLayout 可以 translateX。
谁能帮我?谢谢!
布局
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/panel"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"/>
</FrameLayout>
然后在 Activity
public class MainActivity3 extends AppCompatActivity {
float downX = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_frame);
FrameLayout panel = findViewById(R.id.panel);
panel.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
downX = event.getX();
return true;
case MotionEvent.ACTION_MOVE:
float dx = event.getX() - downX;
panel.setTranslationX(dx);
return true;
case MotionEvent.ACTION_UP:
return true;
}
return false;
}
});
TextView textView = findViewById(R.id.textView);
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
textView.setText("this is textview click");
}
});
}
}