我正在使用 Jake Wharton 的 ActionBarSherlock;在我的一项 Activity 中,我使用了标签导航。 而且,我有一个 ViewFlipper 来管理一些 View 。
但是,我希望用户能够在选项卡之间滑动。
如果在显示的 View (因此,显示的 viewFlipper 的 subview )中有另一个 View ,它是有效的,安全的。
示例:
<LinearLayout>
<ViewFlipper>
<LinearLayout> //First View
</LinearLayout>
<LinearLayout> //Second View
<TextView/>
</LinearLayout>
<LinearLayout> //Third View
</LinearLayout>
</ViewFlipper>
</LinearLayout>
如果我在第一个 View (或第三个 View )中,滑动效果很好;但不是在第二个。
- 为什么?
- 如何解决?我应该将 Touch Listener 设置为所有“ subview ”吗?
PS:我将监听器设置为包含 viewFlipper 的(根)LinearLayout。
最佳答案
我理解了您问题的 40%。请在提交问题之前校对您的问题。我真的对一些事情感到困惑。 #1 你使用的是 View 还是 fragment ?如果你正在使用标签,你应该使用 fragment ! #2 您是通过 ViewFlipper、滑动/水平分页、使用选项卡或同时使用所有 3 种方式在 fragment 之间切换。
针对您的第二个问题,如果您使用的是 ViewFlipper,则需要实现 OnClickListener,当用户单击 Flipper 时,应用程序将进入 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 有任何关系。
关于android - ActionBarSherlock Tab - 滑动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12438524/