ListView滚动奇怪的行为

时间:2015-01-16 10:30:12

标签: android listview fragment adapter

我有一个带有一些布局的listView,我已经将这个问题简化为最大化,但它仍然无法正常工作。它发生了什么:

1)ListView的第一行正常工作:它是“可抓取的”,即我可以触摸它并向上或向下移动手指,滚动它。

2)listView中的所有其他行只能通过“ikonka”和“tojkat”ImageViews获取

这是布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center_vertical"
    android:gravity="bottom" >

    <ImageView
        android:focusable="false"
        android:id="@+id/ikonka"
        android:layout_width="@dimen/listview_album_art"
        android:layout_height="@dimen/listview_album_art"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:paddingBottom="@dimen/audio_player_icon_padding"
        android:paddingTop="@dimen/audio_player_icon_padding"
        android:scaleType="centerCrop" />

    <ImageView
        android:focusable="false"
        android:id="@+id/akcja"
        android:layout_width="@dimen/listview_album_art"
        android:layout_height="@dimen/listview_album_art"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginBottom="@dimen/audio_player_icon_padding"
        android:layout_marginTop="@dimen/audio_player_icon_padding"
        android:scaleType="centerCrop" />

    <ImageView
        android:focusable="false"
        android:id="@+id/trojkat"
        android:layout_width="50dip"
        android:layout_height="match_parent"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:background="@null"
        android:scaleType="center"
        android:src="@drawable/ic_action_overflow" />

</RelativeLayout>

适配器,为此问题而简化:

 public class AdapterTrackowDlaZapytan extends CursorAdapter {
LayoutInflater inflater = null;

public AdapterTrackowDlaZapytan(FragmentActivity c, Cursor cu, int flags) {
    super(c, cu, flags);

    inflater = (LayoutInflater) c
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}

@Override
public void bindView(View view, Context context, Cursor cursor) {
    // nothing really interesting here, besides ViewHolder, but even without it it works as described
}

@Override
public View newView(Context context, Cursor cursor, ViewGroup vg) {
    ViewHolder holder;

    View v = inflater.inflate(R.layout.test_directory_row, vg, false);
    return v;
}

  }

我认为这不重要,但ListView是由FragmentStatePagerAdapter创建的片段的一部分,FragmentStatePagerAdapter是属于Activity的片段的成员......

对我而言,它看起来像Android bug(第一行有效!),但我可能错了。有什么想法吗?

编辑:有趣的是,使用新的ImageView填充整个布局并没有改变任何东西 - 只能抓取“旧”ImageViews进行滚动。

编辑:更有趣:制作trojkat视图宽度match_parent,不会改变任何东西!仍然只能使用视图左侧和右侧的小区域进行滚动。

编辑:哦,我的!我找到了!发生的事情是,放置在当前片段下方的片段接收所有滚动事件!现在我将如何覆盖这种愚蠢的行为?!

编辑和解决方案:这是使用PageTransformer时发生的错误!在这里寻找解决方案:ListView inside ViewPager won't scroll when applying a PageTransformer

1 个答案:

答案 0 :(得分:0)

正如我所怀疑的,这个错误是Android错误,它发生在PageTransformer,见这里:

ListView inside ViewPager won't scroll when applying a PageTransformer

将此问题留给将来寻找答案的人会很好,因为这个错误可能会以非常奇怪的方式表现出来,并且猜测它是由PageTransformer造成的并不容易!