View Pager中的垂直滑动问题

时间:2014-08-28 07:44:02

标签: android android-fragments android-viewpager swipe gesture

我正在使用查看寻呼机并且垂直滑动无法正常工作,我搜索了很多但无济于事我找到了这个解决方案,但这也没有正常工作,解决方法是阻止文本视图链接上的单击侦听器

details.setOnTouchListener(new View.OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                details.getParent().requestDisallowInterceptTouchEvent(true);
                return false;
            }
        });

但是我无法在文本视图上滑动视图页面,然后我尝试使用我的片段上的手势检测器检测手势,并在左/右滑动时更改片段对于动画,这个技巧很好但问题是动画的外观不像视图分页器那样。我确实找到了解决方案,我正在分享它,以帮助其他更好的答案也受到赞赏。

1 个答案:

答案 0 :(得分:0)

以下是我的所作所为并希望它能帮到你们,谢谢如果它不能让我知道,如果你有任何更好的想法,请分享以便我们改进。

//在activity或fragmentActivity中编写此代码oncreate注意我在internt中传递数据供我使用请跳过,如果你不想要

Intent newsFrag = new Intent(mContext, PageViewActivity.class);
newsFrag.putExtra("xyz", getArguments().getString("xyz"));
newsFrag.putExtra("abc", abc);
startActivity(newsFrag); 

在视图寻呼机活动中我做了这个

import java.util.ArrayList;
import java.util.List;


import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;

public class PageViewActivity extends FragmentActivity {

MyPageAdapter pageAdapter;
List<Fragment> fragments;
RSSFeed feed;
String xyz;
int pos;

@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_page_view);
    xyz= getIntent().getExtras().getString("xyx");
    abc = getIntent().getExtras().getInt("abc");

    feed = LocalDatabaseManager.getInstance(this).fetchOnCategory(xyz);

    fragments = getFragments();

    pageAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments);

    ViewPager pager = (ViewPager) findViewById(R.id.viewpager);

    pager.setAdapter(pageAdapter);
    pager.setCurrentItem(pos - 1);
}

private List<Fragment> getFragments() {

    List<Fragment> fList = new ArrayList<Fragment>();
    for (int i = 0; i < feed.getItemCount(); i++) {
        MyFragmentNews myfrag = new MyFragmentNews();
        Bundle bundle = new Bundle();
        bundle.putInt("abc", abc- 1);
        bundle.putString("xyz", xyz);
        myfrag.setArguments(bundle);

        myfrag.newInstance(feed.getItem(i));
        fList.add(myfrag);
    }
    return fList;
  }
}

这是我制作片段的方式

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.View.OnClickListener;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.RelativeLayout;
import android.widget.TextView;


public class MyFragmentNews extends Fragment {
RSSItem rssItem;
ImageButton bookmark;
private RelativeLayout progressLoader;
private FrameLayout theRoot;

public MyFragmentNews newInstance(RSSItem newsItem) {
    MyFragmentNews f = new MyFragmentNews();
    rssItem = newsItem;
    return f;
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle     savedInstanceState) {

    View view = inflater.inflate(R.layout.news_details, container, false);

    TextView heading = (TextView) view.findViewById(R.id.newHeading);
    heading.setText(AppUtils.cleanSymbols(Html.fromHtml(rssItem.getTitle()).toString()));


    return view;
}

}

这是帮助我http://www.javacodegeeks.com/2013/04/android-tutorial-using-the-viewpager.html

的链接

如果有人用手势dector做什么我也可以发布该代码,希望它有助于谢谢