2012-09-15 29 views
3

我正在使用Jake Wharton的ActionBarSherlock;在我的一項活動中,我使用Tab Tab。 而且,我有一個ViewFlipper來管理一些視圖。ActionBarSherlock Tab - Slide

但是,我希望用戶能夠在選項卡之間滑動。

它的工作,如果在顯示視圖(如此,顯示viewFlipper的孩子),安全,有另一種觀點。

實施例:

<LinearLayout> 
    <ViewFlipper> 
      <LinearLayout> //First View 

      </LinearLayout> 
      <LinearLayout> //Second View 

       <TextView/> 

      </LinearLayout> 
      <LinearLayout> //Third View 

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

如果我在第一視圖(或第三)是,滑動工作正常;但不在第二。

  1. 爲什麼?
  2. 如何解決這個問題?我應該將Touch Listener設置爲所有「子視圖」嗎?

PS:我聽者設置爲包含viewFlipper(根)的LinearLayout。

+1

你有沒有考慮過使用帶'Fragments'而不是'ViewFlipper'的'ViewPager'? –

回答

0

我理解你的問題的40%。在您登頂之前,請校對您的問題。我對一些事情感到困惑。 #1你是否使用Views或Fragments?如果你使用標籤,你應該使用片段! #2你是否通過ViewFlipper,Swipe/Horizo​​ntal Paging,使用Tabs或所有3同時切換片段。

爲了迴應第二個問題,如果您使用的是ViewFlipper,則需要實現OnClickListener,並且當用戶單擊Flipper時,該應用程序將進入onClick方法。如果你實現了View.OnTouchListener,應用程序將進入方法onTouch(View v,MotionEvent事件)。注意onTouch的參數。你需要一個MotionEvent。 ViewFlipper最適合短時間點擊。 MotionEvent最適合滑動。

爲了活動ViewFlipper,您需要:

1)flippy = (ViewFlipper) findViewById(R.id.viewFlipper1);
2)flippy.setOnClickListener(this); //This is to make the ViewFlipper respond to clicks.
3)implements OnClickListener //This goes on top of your class (after 「extends」).
4)然後,當用戶在ViewFlipper實際點擊時,程序會去方法:

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

迴應你的第一個問題。我猜你的問題是這樣的:
1)爲什麼我不能使用ViewFlipper在兩個以上的項目之間滑動?
這是如何。下面是一個名爲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"是指我在我的清晰圖片/ drawable- hdpi文件夾。此外,您可以使用<TextView>而不是<ImageView>。例如:

<ViewFlipper> 
    <TextView></TextView> 
    <TextView></TextView> 
    <TextView></TextView> 
</ViewFlipper> 

另外,我非常懷疑你的問題與ActionBarSherlock有什麼關係。