Как установить OnClickListener для ScrollView?
Я разрабатываю проект android, в котором есть viewpager. я написал адаптер для своего viewpager, и мой Адаптер состоит из S scrollview и некоторых представлений внутри него.
Я хочу, когда пользователь нажимает на scrollview, что-то происходит (я тоже написал эту часть и протестировал ее, и она работает).
я реализую onClickListener для моего scrollview, но он не запускается, когда пользователь нажимает на это.
Я уже прочитала этой но это не работает для мне.
мой код для onClickListener здесь
rootView = inflater.inflate(R.layout.level_selector_list_view_adapter, container, false);
ScrollView scroll = (ScrollView) rootView.findViewById(R.id.level_selector_view_scroll_view);
scroll.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
Log.e(MainActivity.WATERMELON_TAG, "Click!!!");
}
});
и мой код макета это:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="@dimen/level_selector_values_main_page_view_pager_width"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ScrollView
android:id="@+id/level_selector_view_scroll_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
tools:ignore="UselessParent" >
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="false"
tools:ignore="UselessParent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:clickable="false"
android:orientation="vertical" >
<ImageView
android:id="@+id/level_selector_view_pager_adapter_level_logo"
android:layout_width="@dimen/level_selector_values_view_pager_adapter_level_logo_width"
android:layout_height="@dimen/level_selector_values_view_pager_adapter_level_logo_height"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/level_selector_values_view_pager_adapter_level_logo_top_margin"
android:clickable="false"
android:scaleType="fitXY"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/level_selector_view_pager_adapter_level_name"
android:layout_width="@dimen/level_selector_values_view_pager_adapter_level_name_width"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/level_selector_values_view_pager_adapter_level_name_top_margin"
android:clickable="false"
android:gravity="center"
android:textColor="@color/level_selector_values_level_name_font_color"
android:textSize="@dimen/level_selector_values_level_name_font_size" />
<TextView
android:id="@+id/level_selector_view_pager_adapter_level_score"
android:layout_width="@dimen/level_selector_values_view_pager_adapter_level_score_width"
android:layout_height="wrap_content"
android:layout_gravity="center_horizontal"
android:layout_marginTop="@dimen/level_selector_values_view_pager_adapter_level_score_top_margin"
android:clickable="false"
android:gravity="center"
android:textColor="@color/level_selector_values_level_name_font_color"
android:textSize="@dimen/level_selector_values_font_size" />
</LinearLayout>
<ImageView
android:id="@+id/level_selector_view_pager_adapter_lock"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:alpha="0.75"
android:clickable="false"
android:scaleType="fitXY"
android:src="@drawable/lock"
tools:ignore="ContentDescription" />
</FrameLayout>
</ScrollView>
2 ответов
ребенок Views
вашего ScrollView
потребляют события щелчка на ScrollView
.
решение этой проблемы состоит в том, чтобы установить onClickLIstener
до немедленно ребенок ScrollView
на FrameLayout
в вашем случае.
не забудьте установить макет "кликабельны".
кроме того, я рекомендую не использовать FrameLayout
вообще, так как это просто бесполезный контейнер. Вместо этого просто пусть LinearLayout
в настоящее время ребенок из FrameLayout
быть следующим ребенком ScrollView
.
попробуй:
public class ClassName implements OnClickListener {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.fragment_child, container, false);
ScrollView scrollView= (ScrollView) root.findViewById(R.id.my_ScrollView);
scrollView.setOnClickListener(this);
return root;
}
@Override
public void onClick(View v) {
Log.e(MainActivity.WATERMELON_TAG, "Click!!!");
}
}