给出以下布局:
<RelativeLayout
android:id="@+id/item"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageview_item"
android:layout_width="200dp"
android:layout_height="150dp"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:scaleType="fitXY"
android:adjustViewBounds="false" />
<ScrollView
android:id="@+id/scrollview_description"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_below="@+id/imageview_item"
android:scrollbars="vertical"
android:fillViewport="true">
<TextView
android:id="@+id/textView_description"
style="@style/TextDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</ScrollView>
</RelativeLayout>
在代码中我向父/容器relativeLayout添加了一个OnClickListenter。
View itemView = (View) rootView.findViewById(R.id.item);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Do stuff
});
如果轻触ImageView,这样可以正常工作,但是如果点击描述ScrollView / TextView区域,OnClickListenter的onClick()方法永远不会被触发,大概是因为ScrollView正在处理/吞下触摸。
如何从ScrollView传递标准点击事件,以确保其父亲RelativeLayout OnClickListenter.onClick()方法触发? (但显然仍然可以滚动ScrollView)
由于
答案 0 :(得分:0)
声明您的ScrollView non clickable and non focusable
将点击事件传递给parentView。
android:clickable="false"
android:focusable="false"
答案 1 :(得分:0)
ScrollView
总是需要一个孩子作为布局。 ScrollView
永远不会将直接子视为View。因此,在scrollview中创建一个布局,然后在该布局中添加TextView
,如下所示:
我添加了LinearLayout
您可以根据自己的选择添加布局。
<ScrollView
android:id="@+id/scrollview_description"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_below="@+id/imageview_item"
android:scrollbars="vertical"
android:fillViewport="true">
<LinearLayout
android:id="@+id/linerlayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TextView
android:id="@+id/textView_description"
style="@style/TextDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
</ScrollView>