gpt4 book ai didi

java - 如何为 ScrollView 设置 OnClickListener?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:40:23 25 4
gpt4 key购买 nike

我正在开发一个带有 viewpager 的 android 项目。我为我的 viewpager 编写了一个适配器,我的适配器由 s scrollview 和其中的一些 View 组成。

我希望当用户点击 ScrollView 时,会发生一些事情(我也写了这部分并测试了它并且它有效)。

我为我的 ScrollView 实现了 onClickListener,但当用户点击它时它不会被触发。

我已经读过this但这对我不起作用。

我的 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>

最佳答案

ScrollView 的子 View 正在消耗您在 ScrollView 上执行的点击事件。

此问题的解决方案是将 onClickLIstener 设置为 ScrollViewimmediate 子级,即 FrameLayout 在你的情况下。

不要忘记将布局设置为“可点击”。

此外,我建议根本不要使用 FrameLayout,因为它只是一个无用的容器。相反,只需让当前作为 FrameLayout 子级的 LinearLayout 成为 ScrollView 的下一个子级。

关于java - 如何为 ScrollView 设置 OnClickListener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24495893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com