Android - Жест с поддержкой макета вкладок со списками - PullRequest
1 голос
/ 31 января 2011

Я пытаюсь настроить жесты, работающие с макетом вкладок в приложении для Android.То, с чем я работаю, - это отдельное действие с различным представлением для каждой вкладки.Вместо того, чтобы содержать их в FrameLayout, я использую ViewFlipper для содержимого моей вкладки.Я хочу, чтобы жесты влево / вправо заменяли активные вкладки активной вкладкой на левую или правую от текущей.

Проблема возникает при перелистывании в и из моего третьего списка после того, как элементы были добавлены в него.Я вижу поведение, когда отображается третий список, но наложен на список, в котором я был ранее.

Есть идеи, почему это происходит?

Мой Java-код для переключения видов / вкладок:

public void onSwipe(int direction) {     
    switch (direction) {     
        case SimpleGestureFilter.SWIPE_RIGHT : swipeRight(); break;
        case SimpleGestureFilter.SWIPE_LEFT :  swipeLeft(); break;
    }    
}

private void swipeLeft() {  

    viewFlipper.setInAnimation(this,R.anim.slide_in_right);
    viewFlipper.setOutAnimation(this,R.anim.slide_out_left);
    viewFlipper.showNext();
    tabHost.setCurrentTab( (tabHost.getCurrentTab()+1 ) % NUMTABS );
}

private void swipeRight() {

    viewFlipper.setInAnimation(this, android.R.anim.slide_in_left); 
    viewFlipper.setOutAnimation(this,android.R.anim.slide_out_right);
    viewFlipper.showPrevious();
    tabHost.setCurrentTab( (tabHost.getCurrentTab()+(NUMTABS-1) ) % NUMTABS ); //loop around to avoid -1
}

Мой макет:

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RelativeLayout
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="5dp">
    <TabWidget
        android:id="@android:id/tabs"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true" />
    <ViewFlipper
        android:id="@android:id/tabcontent"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_below="@android:id/tabs"
        android:layout_above="@+id/search_button"
        android:padding="5dp" >          
         <ListView android:id="@+id/list1"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:choiceMode="multipleChoice"
          android:layout_alignParentTop="true"
          android:textFilterEnabled="true"/>

         <ListView android:id="@+id/list2"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:choiceMode="multipleChoice"
          android:layout_alignParentTop="true"
          android:textFilterEnabled="true"/>


         <ListView android:id="@+id/list3"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content" 
          android:layout_alignParentTop="true"/>


     </ViewFlipper>
     <Button android:id="@+id/search_button"
              android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:layout_alignParentBottom="true"
              android:text="Search" />

</RelativeLayout>

1 Ответ

2 голосов
/ 08 сентября 2011

Это теперь поддерживается "из коробки" в библиотеках совместимости с Android SDK: http://android -developers.blogspot.com / 2011/08 / horizontal-view-swiping-with-viewpager.html? M = 1

...