У меня есть 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
в конструкторе адаптеров, можете ли вы применить контекст и проверить один раз? – EagleEye
Проверьте, в каком смысле? Обратите внимание, что контекст не используется ни в bindView, ни в newView для чего-либо. Как вы думаете, я должен каждый раз создавать надувные элементы из текущего контекста в newView? – ssuukk
Нет. Я сомневаюсь в раздувании из контекста. Я думаю, вам нужно изменить контекст. – EagleEye