2016-09-19 16 views
0

viewFlipper内でlistViewを使用すると問題が発生します。 リストビューはジェスチャーを通常のクリックとして動作し、リストビューアイテムonClickListenerのように動作します。viewviewer内のリストビュー

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
tools:context="com.test.slideanimation.MainActivity"> 

<ViewFlipper 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:id="@+id/Flipper"> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <View 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#aaff" 
      android:id="@+id/view1"/> 

    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <View 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="#aaff22" 
      android:id="@+id/view3"/> 
    </RelativeLayout> 

    <RelativeLayout 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 
     <ListView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:id="@+id/MyListView" 
      /> 
    </RelativeLayout> 

</ViewFlipper> 

</RelativeLayout> 

MainActivity.java

package com.test.slideanimation; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 
import android.widget.RelativeLayout; 
import android.widget.Toast; 
import android.widget.ViewFlipper; 

public class MainActivity extends AppCompatActivity { 

ListView MyList; 
ViewFlipper viewFlipper; 
float lastX; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    MyList = (ListView) findViewById(R.id.MyListView); 
    viewFlipper = (ViewFlipper) findViewById(R.id.Flipper); 

    String[] values = new String[] { "Android", "iPhone", "WindowsMobile", 
      "Blackberry", "WebOS", "Ubuntu", "Windows7", "Max OS X", 
      "Linux", "OS/2" }; 
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, values); 
    MyList.setAdapter(adapter); 


} 

// Using the following method, we will handle all screen swaps. 
public boolean onTouchEvent(MotionEvent touchevent) { 
    switch (touchevent.getAction()) { 

     case MotionEvent.ACTION_DOWN: 
      lastX = touchevent.getX(); 
      break; 
     case MotionEvent.ACTION_UP: 
      float currentX = touchevent.getX(); 

      // Handling left to right screen swap. 
      if (lastX < currentX) { 

       // If there aren't any other children, just break. 
       if (viewFlipper.getDisplayedChild() == 0) 
        break; 

       // Next screen comes in from left. 
       viewFlipper.setInAnimation(this, R.anim.slide_in_from_left); 
       // Current screen goes out from right. 
       viewFlipper.setOutAnimation(this, R.anim.slide_out_to_right); 

       // Display next screen. 
       viewFlipper.showNext(); 
      } 

      // Handling right to left screen swap. 
      if (lastX > currentX) { 

       // If there is a child (to the left), kust break. 
       if (viewFlipper.getDisplayedChild() == 1) 
        break; 

       // Next screen comes in from right. 
       viewFlipper.setInAnimation(this, R.anim.slide_in_from_right); 
       // Current screen goes out from left. 
       viewFlipper.setOutAnimation(this, R.anim.slide_out_to_left); 

       // Display previous screen. 
       viewFlipper.showPrevious(); 
      } 
      break; 
    } 
    return false; 
} 

} 

希望いくつかのいずれかのヘルプありがとう:

iは、次のコードを使用します。

+0

あなたはタッチイベントを自分で対処しようとする必要はありませんので、あなたは、代わりに 'ViewFlipper'の' ViewPager'を使用して検討していますか? –

+0

@Mike M.私はそれを試してみる – SimpleProgramming

答えて

関連する問題