【问题标题】:Android ListView ItemClickListener not working properly with HorizontalScrollViewAndroid ListView ItemClickListener 无法与 Horizo​​ntalScrollView 一起正常工作
【发布时间】:2019-07-15 14:10:06
【问题描述】:

我的 OnItemClickListener 无法正常工作。我有一个带有 ListView 的自定义对话框布局。 ListView 将 TextViews 保存为 Item。 TextView 应该是可滚动的,所以我将 TextView 放在 Horizo​​ntalScrollView 中,因为我的文本可能会变长。

但现在的问题是,只有当我移除 ScrollView 时才会调用 OnItemClickListener。

这是我的 ListView 项目 XML:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <HorizontalScrollView android:layout_width="fill_parent"
        android:id="@+id/scrollView"
        android:layout_height="fill_parent"
        android:scrollbars="none">

        <TextView
            android:id="@+id/tv"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:scrollHorizontally="true"
            android:textColor="#fff"
            android:singleLine="true"
            android:paddingLeft="15dp"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:gravity="center_vertical"
            />
    </HorizontalScrollView>

    <View
        android:layout_width="match_parent"
        android:layout_height="10dp"
        android:background="#000"/>
</LinearLayout>

这是我设置 On Item 点击监听器的方法:

ListView listView = builder.findViewById(R.id.listviewDialog);
        listView.setClickable(true);

        ArrayAdapter arrayAdapter = new ArrayAdapter(ContextActivity, R.layout.list_item2, R.id.tv, aListe);

        listView.setAdapter(arrayAdapter);

        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                //
            }
        });

当我将以下属性添加到我的 Item XML 的最顶部布局时,它会起作用:

android:descendantFocusability="blocksDescendants" 

但是我的点击事件只有在我不点击文本时才会触发。

谁能帮帮我?

编辑:

解决方案从 W0rmH0le 发布到此处。基本上,我需要 EditText,而不是 TextView: Horizontal scroll on textview on android?

编辑2: 即使使用可聚焦的 false 等,在 Item Click 上仍会损坏。复选框有效,但 TextView 和 EditText 无效。 所以现在我的 EditText 得到了点击监听器,而不是 listView

【问题讨论】:

    标签: android android-listview android-dialog


    【解决方案1】:

    使用 android:scrollHorizontally="true" 和 EditText 代替 TextView

    试试这样的:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <EditText
                android:id="@+id/tv"
                android:layout_width="wrap_content"
                android:layout_height="50dp"
                android:scrollHorizontally="true"
                android:textColor="#fff"
                android:singleLine="true"
                android:paddingLeft="15dp"
                android:textAppearance="?android:attr/textAppearanceMedium"
                android:gravity="center_vertical"/
                android:scrollHorizontally="true">
        <View
            android:layout_width="match_parent"
            android:layout_height="10dp"
            android:background="#000"/>
    </LinearLayout >
    

    【讨论】:

    • 好的,您的解决方案我必须删除我的视图,因为 Horizo​​ntalScrollView 只能托管一个直接子级。但即使我删除了我的视图,我的 onItemClick 事件仍然不会被调用,即使我添加了 android:descendantFocusability="blocksDescendants"
    • 您需要删除 HorizontalScrollView 并添加到您的 EditTextandroid:scrollHorizontally="true"
    • 如果没有Horizo​​ntalScrollView,我无法在TextView 中水平滚动。请参阅我的编辑。使用 EditText 我可以在没有 Horizo​​ntalScrollView 的情况下滚动
    • 这就是我的意思,我必须使用 EditText 但我的 OnClickListener 仍然没有被调用。我需要以某种方式通过 EditText 传递点击事件
    • 好的,那是因为我为我的 EditText 设置了 android:focusable="false"。但我需要它,因为否则,EditText 将获得焦点来编辑其中的文本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-13
    相关资源
    最近更新 更多