ActionBarSherlock选项卡-滑动

3
我正在使用Jake Wharton的ActionBarSherlock;在我的一个活动中,我使用选项卡导航。同时,我有一个ViewFlipper来管理一些视图。
但是,我希望用户能够在选项卡之间滑动。
这个功能可以正常工作,除非在显示的视图(即显示的ViewFlipper的子级)中有另一个视图。
例如:
<LinearLayout>
     <ViewFlipper>
          <LinearLayout> //First View

          </LinearLayout>
          <LinearLayout> //Second View

               <TextView/>

          </LinearLayout>
          <LinearLayout> //Third View

          </LinearLayout>
     </ViewFlipper>
</LinearLayout>

如果我处于第一个视图(或第三个),则滑动正常;但在第二个视图中则不行。

  1. 为什么?
  2. 如何修复它?我应该将触摸监听器设置到所有“子视图”吗?

PS:我已将监听器设置为包含viewFlipper的(根)LinearLayout。


1
你有没有考虑使用具有Fragment的ViewPager而不是ViewFlipper呢? - Benito Bertoli
1个回答

0

我理解了你问题的大约40%。在提交问题之前,请先校对一下你的问题。我对其中有几个事情感到非常困惑。#1 你是使用Views还是Fragments?如果你正在使用选项卡,那么你应该使用Fragments!#2 你是通过ViewFlipper、滑动/水平分页、使用选项卡还是同时使用这三种方式来切换片段。

针对你的第二个问题,如果你正在使用ViewFlipper,则需要实现OnClickListener,当用户点击Flipper时,应用程序将进入onClick方法。如果你实现了View.OnTouchListener,则应用程序将进入onTouch(View v, MotionEvent event)方法。请注意onTouch的参数。ViewFlipper最适合短按。MotionEvent最适合滑动。

为了激活ViewFlipper,你需要:

1) flippy = (ViewFlipper) findViewById(R.id.viewFlipper1);
2) flippy.setOnClickListener(this); //这是为了让ViewFlipper响应点击事件。
3) implements OnClickListener //这个要放在你的类顶部(在“extends”之后)。
4) 当用户实际点击ViewFlipper时,程序将进入该方法:

    public void onClick(View arg0) {flippy.showNext();}

针对您的第一个问题,我猜测您的问题是:
1)为什么我不能使用ViewFlipper在超过2个项目之间滑动?
这是如何做到的。这里是一个名为Flippering.java的类的示例代码:
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.ViewFlipper;

    public class Flippering extends Activity implements OnClickListener  {
        ViewFlipper flippy;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            // TODO Auto-generated method stub
            super.onCreate(savedInstanceState);
            setContentView(R.layout.h_swipe_neg_one);
            flippy = (ViewFlipper) findViewById(R.id.viewFlipper1);
            flippy.setOnClickListener(this);
        }

        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            flippy.showNext();
        }

    }

这是相应的 XML 文档:
    <ViewFlipper
        android:id="@+id/viewFlipper1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:onClick="Clicked">

        <ImageView
            android:id="@+id/imageView1a"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/autumn_leaves" >
        </ImageView>

        <ImageView
            android:id="@+id/imageView2a"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/azul" >
        </ImageView>

        <ImageView
            android:id="@+id/imageView3a"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:src="@drawable/big_mountain" >
        </ImageView>
    </ViewFlipper>

</LinearLayout>

请注意,android:src="@drawable/big_mountain" 是指我在res/drawable-hdpi文件夹中拥有的图像。此外,您也可以使用<TextView>而不是<ImageView>。例如:
<ViewFlipper>
   <TextView></TextView>
   <TextView></TextView>
   <TextView></TextView>
</ViewFlipper>

此外,我非常怀疑您的问题与ActionBarSherlock无关。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接