【问题标题】:Touch not working on list view触摸不在列表视图上工作
【发布时间】:2014-10-07 08:06:25
【问题描述】:

我在 LinearLayout 上使用触摸事件,其中有一个列表视图(它是一个子视图)。当我触摸列表视图部分时,触摸事件不会被调用。以下是我的代码:

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

    <LinearLayout
        android:id="@+id/llProgressBar"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="false"
        android:gravity="center"
        android:visibility="gone" >

        <ProgressBar
            android:id="@+id/pbLoading"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:contentDescription="Loading"
            android:indeterminate="true"
            android:progressDrawable="@android:drawable/progress_indeterminate_horizontal"
            android:visibility="gone" />
    </LinearLayout>

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:cacheColorHint="@android:color/transparent"
        android:listSelector="@android:color/transparent" 
        android:focusable="true">
    </ListView>

</LinearLayout>

我的动画:

final Animation slidedown = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down_half);
    llFavourite.setOnTouchListener(new OnSwipeTouchListener(MidnightMainActivity.this) {
        @Override
        public void onSwipeBottom() {
            llFavourite.startAnimation(slidedown);
            inflateFavouriteLayout(MODE_REFRESH);
        }
    });

但是当我点击布局部分事件被调用。有什么我应该启用或禁用的属性吗?

提前致谢。

【问题讨论】:

    标签: android android-listview android-animation


    【解决方案1】:

    android:focusable="false"

    android:focusableInTouchMode="false"
    

    不适用于 ImageButton。

    在您的布局 xml 中,将此属性添加到根布局

    android:descendantFocusability="blocksDescendants"

    【讨论】:

    • 它不起作用。仅当我从布局中删除进度条时它才有效。我希望当用户下拉列表以刷新时列表变得不可见并显示此进度条。刷新列表后再次可见,进度条不可见。
    【解决方案2】:

    从你的调用类添加

         ListView lView =  (ListView) findViewById(R.id.list);
    lView.setOnItemClickListener(new OnItemClickListener() {
    
        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
    
            Log.i(position);
    
        }
    
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多