将Viewflipper与Gridview一起使用

时间:2011-09-28 12:29:53

标签: android viewflipper

我使用具有OnClickListener的GridView创建了一个工作正常的日历。 现在我将两个GridView包装在一个ViewFlipper中。 ViewFlipper有一个OnTouchListener也可以正常工作,我可以在拖动时使用ontouch更改视图。问题是我必须拖动Activity中的EMTPY空间才能使用ViewFlipper。当我拖动GridView时,根本没有任何事情发生。但我可以点击GridView for OnClickListener。

的xml:

<ViewFlipper android:id="@+id/details"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
      <LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal">
    <GridView
        android:id="@+id/weeks"
        android:numColumns="1"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="8">
    </GridView>
    <GridView
        android:id="@+id/calendar"
        android:numColumns="7"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1">
    </GridView>
</LinearLayout>

android代码:

@Override
public boolean onTouch(View arg0, MotionEvent arg1) {
    // Get the action that was done on this touch event
    switch (arg1.getAction())
    {
        case MotionEvent.ACTION_DOWN:
        {
            // store the X value when the user's finger was pressed down
            downXValue = arg1.getX();
            break;
        }

        case MotionEvent.ACTION_UP:
        {
            // Get the X value when the user released his/her finger
            currentX = arg1.getX();    


            // going backwards: pushing stuff to the right
            if (currentX - downXValue < -(arg0.getWidth()/3))
            {
                mdh.nextMonth();
                calendar.add(Calendar.MONTH, 1);
                currentMonth.setText(new SimpleDateFormat("MMMM yyyy").format(calendar.getTime()));
                cAdapter.notifyDataSetChanged();
                updateWeeks();
                 // Set the animation
                 vf.setInAnimation(arg0.getContext(), R.anim.push_left_in);
                  vf.setOutAnimation(arg0.getContext(), R.anim.push_left_out);
                  // Flip!
                  vf.showPrevious();
            }

            // going forwards: pushing stuff to the left
            if (currentX - downXValue > arg0.getWidth()/3)
            {
                mdh.previousMonth();
                calendar.add(Calendar.MONTH, -1);
                currentMonth.setText(new SimpleDateFormat("MMMM yyyy").format(calendar.getTime()));
                cAdapter.notifyDataSetChanged();
                updateWeeks();
                 // Set the animation
                vf.setInAnimation(arg0.getContext(), R.anim.push_right_in);
                vf.setOutAnimation(arg0.getContext(), R.anim.push_right_out);
                  // Flip!
                 vf.showNext();
            }
            break;
        }

2 个答案:

答案 0 :(得分:2)

gridview.setOnTouchListener(new OnTouchListener(){
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        return detector.onTouchEvent(event);
    }
});

答案 1 :(得分:0)

我对ViewFlipper和ScrollViews也有同样的问题。 尝试将onTouchListener添加到GridView中,它应该可以正常工作。