Android ScrollView点击跳转Activity的Java实现方案咨询
原因说明
ScrollView默认优先处理滚动触摸事件,本身默认不可点击,直接给它设置OnClickListener不会触发回调。
解决方案1:直接给ScrollView设置点击事件
你可以选择在布局的ScrollView标签中添加两个属性:
android:clickable="true" android:focusable="true"
也可以直接在Java代码中动态设置属性后绑定点击事件:
// 绑定ScrollView控件 ScrollView scrollView = findViewById(R.id.scrollView); // 动态设置可点击、可获取焦点 scrollView.setClickable(true); scrollView.setFocusable(true); // 设置点击跳转逻辑 scrollView.setOnClickListener(v -> { // 替换CurrentActivity为当前页面的Activity类名,TargetActivity为要跳转的目标Activity类名 Intent intent = new Intent(CurrentActivity.this, TargetActivity.class); // 如果需要传递参数可在此处调用intent.putExtra()方法 startActivity(intent); });
解决方案2:给ScrollView内部直接子布局设置点击事件
这种方案适配性更高,不会影响ScrollView本身的滑动逻辑,也不需要修改ScrollView的原生属性:
首先给ScrollView内部的LinearLayout添加id:
<LinearLayout android:id="@+id/scrollContentLayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" tools:ignore="MissingConstraints">
之后在Java代码中给这个LinearLayout设置点击事件即可:
LinearLayout scrollContentLayout = findViewById(R.id.scrollContentLayout); scrollContentLayout.setOnClickListener(v -> { Intent intent = new Intent(CurrentActivity.this, TargetActivity.class); startActivity(intent); });
注意事项
如果点击的区域是ScrollView内部的Button、RadioButton这些本身会消费点击事件的控件,点击这些控件的时候不会触发ScrollView/内部布局的点击事件,符合正常交互逻辑;如果需要点击这些区域也触发跳转,可以对应给这些控件也设置同样的点击事件。
内容的提问来源于stack exchange,提问作者Suji
相关产品推荐
相关产品推荐

