3

Jake Wharton の ActionBarSherlock を使用しています。私の活動の 1 つで、タブ ナビゲーションを使用しています。そして、いくつかのビューを管理するための ViewFlipper があります。

しかし、ユーザーがタブ間をスライドできるようにしたいと考えています。

表示されたビュー(つまり、表示されたviewFlipperの子)に別のビューがある場合は安全です。

例 :

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

          </LinearLayout>
          <LinearLayout> //Second View

               <TextView/>

          </LinearLayout>
          <LinearLayout> //Third View

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

最初のビュー (または 3 番目のビュー) にいる場合、スライドは正常に機能します。しかし、2番目ではありません。

  1. なんで ?
  2. それを修正する方法は?Touch Listener をすべての「サブビュー」に設定する必要がありますか?

PS: viewFlipper を含む (ルート) LinearLayout にリスナーを設定しました。

4

1 に答える 1

0

あなたの質問の 40% くらいは理解できました。サミットする前に、質問を校正してください。私はいくつかのことについて本当に混乱しています。#1 ビューまたはフラグメントを使用していますか? タブを使用している場合は、フラグメントを使用する必要があります! #2 ViewFlipper、スワイプ/水平ページング、タブを使用して、または3つすべてを同時に使用して、フラグメントを切り替えていますか。

2 番目の質問への回答として、ViewFlipper を使用している場合は、OnClickListener を実装する必要があります。ユーザーがフリッパーをクリックすると、アプリはメソッド onClick に入ります。View.OnTouchListener を実装すると、アプリはメソッド onTouch(View v, MotionEvent event) に入ります。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 を使用して 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 フォルダーにある画像を参照していることに注意してください。また、 の代わりに を<ImageView>使用できます<TextView>。たとえば、次のようになります。

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

さらに、あなたの問題が ActionBarSherlock と関係があるとは思えません。

于 2013-02-20T14:32:00.013 に答える