2015-01-16 2 views
0

У меня есть listView с некоторой компоновкой, я упростил его для этого вопроса до максимума, но он все еще не работает, как ожидалось. Что происходит с этим:ListView прокручивает странное поведение

1) первая строка ListView работает правильно: она «захватывает», т. Е. Я могу прикоснуться к ней и перемещать палец вверх или вниз, прокручивать ее.

2) все остальные строки в ListView являются grabbable только "иконка" и "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, которая является членом фрагмента, который принадлежит a Activity ...

Для меня это похоже на ошибку Android (первая строка работает!), но я могу ошибаться. Есть предположения?

EDIT: интересно, заполнение всего макета новым ImageView ничего не изменило - для прокрутки можно схватить только «старые» ImageViews.

EDIT: еще интереснее: сделать тройку просмотра шириной match_parent, ничего не меняет! Для прокрутки можно использовать только небольшие области слева и справа.

EDIT: О, мой! Я нашел его! Что происходит, так это то, что фрагмент, который кладет НИЖЕ текущего фрагмента, получает все события прокрутки! Теперь, как бы я отменил это глупое поведение ?!

EDIT AND SOLUTION: Это ошибка, которая возникает при использовании PageTransformer! Ищите решения здесь: ListView inside ViewPager won't scroll when applying a PageTransformer

+0

в конструкторе адаптеров, можете ли вы применить контекст и проверить один раз? – EagleEye

+0

Проверьте, в каком смысле? Обратите внимание, что контекст не используется ни в bindView, ни в newView для чего-либо. Как вы думаете, я должен каждый раз создавать надувные элементы из текущего контекста в newView? – ssuukk

+0

Нет. Я сомневаюсь в раздувании из контекста. Я думаю, вам нужно изменить контекст. – EagleEye

ответ

0

Как я и подозревал, что ошибка является Android ошибка и это происходит из-за PageTransformer, смотрите здесь:

ListView inside ViewPager won't scroll when applying a PageTransformer

Было бы хорошо, чтобы оставить этот вопрос для тех, кто в будущее поиска ответа, так как эта ошибка может проявляться очень странно, и не так просто догадаться, что это вызвано PageTransformer!

Смежные вопросы