【问题标题】:View Pager in Activity在活动中查看寻呼机
【发布时间】:2013-04-22 21:09:44
【问题描述】:

我想使用视图寻呼机而不是通过 android 中的手势侦听器来滑动活动。 我可以在图像视图上添加视图寻呼机,但不能在活动上添加,所以请帮助我... 提前致谢!

【问题讨论】:

  • 您将片段添加到 ViewPager,而不是活动。看看当您选择“滑动导航”作为模板时 Eclipse 创建的示例,您就会明白了。
  • 您必须在视图寻呼机中使用片段。而不是活动本身。如果您想知道如何做到这一点,我可以将其粘贴为答案。

标签: android android-viewpager


【解决方案1】:

为分页器中的每个视图使用片段。

FragmentActivityonCreate()方法中编写以下代码。

List<Fragment> fragments = new Vector<Fragment>();

//for each fragment you want to add to the pager
Bundle page = new Bundle();
page.putString("url", url);
fragments.add(Fragment.instantiate(this,MyFragment.class.getName(),page));

//after adding all the fragments write the below lines

this.mPagerAdapter  = new PagerAdapter(super.getSupportFragmentManager(), fragments);

mPager.setAdapter(this.mPagerAdapter);

一个示例片段定义:

public class MyFragment extends Fragment {


public static MyFragment newInstance(String imageUrl) {

final MyFragment mf = new MyFragment ();

    final Bundle args = new Bundle();
    args.putString("somedata", "somedata");
    mf.setArguments(args);

    return mf;
}

public MyFragment() {}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    String data = getArguments().getString("somedata");
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    // Inflate and locate the main ImageView
    final View v = inflater.inflate(R.layout.my_fragment_view, container, false);
    //... 
    return v;
}

编辑(添加):FragmentPagerAdapter

public class MyFragmentAdapter extends FragmentPagerAdapter {

public static int pos = 0;

private List<Fragment> myFragments;

public MyFragmentAdapter(FragmentManager fm, List<Fragment> myFrags) {
    super(fm);
    myFragments = myFrags;
}

@Override
public Fragment getItem(int position) {

    return myFragments.get(position);

}

@Override
public int getCount() {

    return myFragments.size();
}

@Override
public CharSequence getPageTitle(int position) {

    setPos(position);

    String PageTitle = "";

    switch(pos)
    {
        case 0:
                PageTitle = "page 1";
                break;
        case 1:
                PageTitle = "page 2";
                break;
        case 2:
                PageTitle = "page 3";
                break;
        case 3:
                PageTitle = "page 4";
                break;
        case 4:
                PageTitle = "page 5";
                break;
        case 5: 
                PageTitle = "page 6";
                break;
        case 6:
                PageTitle = "page 7";
                break;
    }
    return PageTitle;
}

public static int getPos() {
    return pos;
}

 public static void setPos(int pos) {
    MyFragmentAdapter.pos = pos;
 }
}

【讨论】:

  • 谢谢先生,这是一个很好的例子,但您能否也添加 PageAdapter 代码...
  • 现在看到你的评论了。 PagerAdapter 已添加。叫我桑托什。编码愉快。
【解决方案2】:

像这样使用overridePendingTransition

startActivity(YourNewActivity);
overridePendingTransition(R.anim.right_to_left,
                            R.anim.left_to_right);

right_to_left.xml

<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:shareInterpolator="false" >

    <translate
        android:duration="300"
        android:fromXDelta="100%"
        android:fromYDelta="0%"
        android:toXDelta="0%"
        android:toYDelta="0%" />

</set>

left_to_right.xml

<translate
    android:duration="300"
    android:fromXDelta="0%"
    android:fromYDelta="0%"
    android:toXDelta="-100%"
    android:toYDelta="0%" />

【讨论】:

    【解决方案3】:

    ViewPager 仅包含 views 而不是 activity 可选地由 fragments 支持,在另一个 activity 中包含 activity 已正式折旧。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多