我有一个我想要进行tappable的相对布局,包括它的子视图。
<RelativeLayout
android:id="@+id/houses_rel_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:background="@drawable/white_grey_border_bottom">
<HorizontalScrollView
android:id="@+id/houses_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:duplicateParentState="true"
android:scrollbars="none">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
...
</LinearLayout>
</HorizontalScrollView>
<TextView... />
.....
</RelativeLayout>
我想在相对布局,水平视图和textview上设置一个onclicklistener,并在图标上设置一个单独的onclicklistener。
@BindView(R.id.houses_rel_1)
ViewGroup mHouse;
@BindView(R.id.fav_icn_1)
ImageView mFavIcn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_house_list);
ButterKnife.bind(this);
mHouse.setOnClickListener(new ViewGroup.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(mContext, SomeActivity.class);
mContext.startActivity(intent);
}
});
mFavIcn.setOnClickListener(new View.OnClickListener() {
...
});
}
目前,新活动仅在我点击textview
时才会开始,但当我点击horizontalscrollview
时没有任何反应。我是否必须将onclicklistener复制到horizontalscrollview
?
答案 0 :(得分:1)
尝试分组onClick of Butter Knife:
@OnClick({ R.id.houses_1, R.id.houses_rel_1 })
public void startSomeActivity() {
Intent intent = new Intent(mContext, SomeActivity.class);
mContext.startActivity(intent);
}
答案 1 :(得分:1)
请使用setOnTouchListener()
上的horizontalScrollView
代替setOnClickListener()
。
HorizontalScrollView.java
的源代码后,我发现它覆盖了View
或ViewGroup
- onTouchEvent
,onInterceptTouchEvent
的这些方法。不使用{{1} },super.onTouchEvent
。部分意味着如果你在它上面设置一个OnClickListener(super.onInterceptTouchEvent
),就永远不会调用HorizontalScrollView
事件。
如果您想了解更多信息,也可以阅读源代码。然后我告诉你原因会更有帮助,因为我在阅读时可能会有一些误解。
我希望能帮助你。