android - Android ListView ItemClickListener 无法与 HorizontalScrollView 一起正常工作
问题描述
我的 OnItemClickListener 无法正常工作。我有一个带有 ListView 的自定义对话框布局。ListView 将 TextViews 保存为 Item。TextView 应该是可滚动的,所以我将 TextView 放在 HorizontalScrollView 中,因为我的文本会变长。
但现在的问题是,只有当我删除我的 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 click Listener 的方法:
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: Android 上 textview 上的水平滚动?
EDIT2:即使使用可聚焦的错误等复选框,在项目单击时仍会损坏,但 TextView 和 EditText 无效。所以现在我的 EditText 得到了点击监听器,而不是 listView
解决方案
使用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 >
推荐阅读
- typescript - 如何键入来自 realmDB 的对象数组?
- javascript - 使用 Puppeteer 检索网页上所有 HTML IMG 标签的 SRC 属性
- azure - AKS 中用于多区域存储的正确 PVC 配置是什么?
- angular - ngb popover不呈现html编码
- python - 使用networkx获取最短路径,但通过路径应该经过的额外站点
- firebase - events_* 表 bigquery 中的“privacy_info”是什么?
- xml - 如何通过批处理文件命令检查 xml 元素/属性是否存在
- amazon-web-services - 条件表达式中的 zipmap 函数给出真假结果表达式必须具有一致的类型错误
- uniwebview - UniWebView OnMessageReceived 在场景更改后不起作用
- azure-devops - 为什么我不能使用变量在 Azure Pipeline YAML 配置文件中定义环境属性?