0

我在扩展ListActivity. 在我滚动列表之前,似乎无法“单击”列表中的项目。稍微滚动列表后,“点击”工作正常。如果列表根本不可滚动(没有足够的项目等),那么一切都会正常运行。

由于活动扩展ListActivity,我只是覆盖onListItemClick

@Override
protected void onListItemClick(ListView l, View v, int position, long id)
{
   Log.e(TAG, "Click fired");
}

列表中的行是由自定义 XML 定义的,在阅读了此处几乎所有的帖子后,我认为它与可聚焦元素有关,但我似乎无法让它发挥作用。从下面的 XML 列表中可以看到,所有项目都有focusable="false",但这没有帮助。

我也尝试了所有选项android:descentFocusability——但没有一个能正常工作。

这个问题在 Froyo 的所有 Android 版本上都很明显 --> ICS

编辑

我已经确定如果我删除附加到同一列表的 onScroll 侦听器,这个问题就会消失。但是,我真的需要它,并且我已经将日志信息放在两者中onScrollonScrollStateChanged并且没有显示任何信息(例如,滚动也没有被触发。)这是一个已知的冲突吗?

相关活动的布局 XML:

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:focusable="false"
    android:focusableInTouchMode="false">
   <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:focusable="false"
        android:focusableInTouchMode="false">
     <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Search Results: "
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_gravity="left" 
            android:focusable="false"
            android:focusableInTouchMode="false" />
         <TextView android:id="@+id/query_type"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="context sensitive"
            android:textAppearance="?android:attr/textAppearanceMedium"
            android:layout_gravity="right" 
            android:textStyle="italic"
            android:focusable="false"
        android:focusableInTouchMode="false" />
       </FrameLayout>
       <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:minHeight="1dip"
        android:background='@color/grey'
        android:focusable="false"
        android:focusableInTouchMode="false" />
<ListView
    android:id="@+id/android:list"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:cacheColorHint="#00000000"
    android:descendantFocusability="blocksDescendants" />
<TextView
    android:id="@+id/prodcutdb_results_empty"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:paddingLeft="5dip"
    android:paddingTop='4dip'
    android:text="No results"
    android:focusable="false"
    android:focusableInTouchMode="false"
    android:visibility="gone"/>
</LinearLayout>

自定义列表项 XML:(在此 XML 中添加可聚焦标签LinearLayout无效)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="?android:attr/listPreferredItemHeight"
    android:orientation="horizontal"
    android:paddingRight="4dip"
    android:cacheColorHint="#00000000">
<TextView 
    android:id="@+id/list_item_label"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="10dp"
    android:paddingLeft="20dip"
    android:textSize="16dp" 
    android:layout_weight="1"
    android:clickable="false"
    android:focusable="false"
    android:focusableInTouchMode="false" />
    <view  
        android:layout_width="wrap_content"
        android:id="@+id/list_item_image"
        android:layout_height="fill_parent"
        android:src="@drawable/right"
        android:maxHeight="50dp"
        android:maxWidth="50dp"
        android:layout_gravity="right"
        android:clickable="false"
        android:focusable="false"
        android:focusableInTouchMode="false" />

</LinearLayout>
4

3 回答 3

0

在您的自定义列表项 XML 中,您是否打算将第三个标签设为 ImageView?我不确定这是否是导致您的问题的原因,但如果 sdk 发现您的 XML 格式不正确,则可能会导致问题。

于 2012-10-04T15:48:15.597 回答
0

你应该把你的列表放在一个普通的 LayoutView 中(不要使用滚动视图),它可以出现并使你的其余布局消失,反之亦然,这样列表就可以拥有完整的屏幕。这就是它对我有用的方式。

编辑我这样使用它

  <RelativeLayout
    android:id="@+id/NewsListLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content" android:visibility="gone">

    <ListView
        android:id="@+id/mylistView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>

</RelativeLayout>
于 2012-10-04T21:47:15.920 回答
0

为了简短起见——没有任何效果。我为每个自定义视图添加了一个 onClick 侦听器。

于 2012-10-22T20:16:17.127 回答