android HorizontalScrollView+ViewPager布局(viewpage不能滑动)
来源:互联网 发布:下载excel2003软件步骤 编辑:程序博客网 时间:2024/05/18 22:43
关于HorizontalScrollView的各种用法,各种使用,参考官方API,里面很详细。这里是说一下我的解决方法
先把效果摆出来,在说话
首先在布局方面,上面是一个HorizontalScrollView,下面是一个viewpage
<HorizontalScrollView android:id="@+id/hsv_dissertaAssem_top" android:layout_width="match_parent" android:layout_height="?android:actionBarSize" android:scrollbars="none" android:layout_below="@+id/rl_dissert_assem_title"> <LinearLayout android:id="@+id/ll_disserta_asserm_top" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical" android:orientation="horizontal"></LinearLayout> </HorizontalScrollView> <com.yibugou.ybg_app.util.CustomViewPager android:id="@+id/container" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/hsv_dissertaAssem_top" />
逻辑代码
public class DissertationAssembleActivity extends BaseFragmentActivity { private List<String> list = new ArrayList<>(); private TextView childTextView[]; @InjectView(R.id.iv_dissert_assem_back) ImageView ivDissertAssemBack; @InjectView(R.id.rl_dissert_assem_title) RelativeLayout rlDissertAssemTitle; @InjectView(R.id.container) CustomViewPager viewPager;// 下部viewpage @InjectView(R.id.ll_disserta_asserm_top) LinearLayout llDissertaAssermTop; @InjectView(R.id.hsv_dissertaAssem_top) HorizontalScrollView hsvDissertaAssemTop; private HashMap<String, String> param = new HashMap<>();// 参数 private LayoutInflater inflater; private View views[]; private TextView textViews[]; private int clickIndex = 0; private int textview_width; private DissertationAssembleAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_dissertation_assemble); ButterKnife.inject(this); inflater = LayoutInflater.from(this); viewPager.setScanScroll(false); initData(); addTextView(); } private void initData() { // 初始化数据 param.put("v", YbgUtils.getVersionName(this)); // 测试填充数据 for (int i = 0; i < 10; i++) { String str = "第" + i + "个"; list.add(str); }// viewPager.setOffscreenPageLimit(1);//一次只加载一个 mAdapter = new DissertationAssembleAdapter(getSupportFragmentManager()); viewPager.setOnPageChangeListener(dissertAssemOnpageChangeListener); } private ViewPager.OnPageChangeListener dissertAssemOnpageChangeListener = new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { changeTextColor(position); } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }; private void addTextView() { int count = list.size(); int childIndex = 0; views = new View[count]; textViews = new TextView[count]; textview_width = getWindowManager().getDefaultDisplay().getWidth() / 5; for (int i = 0; i < count; i++) { View view = inflater.inflate(R.layout.fabric_select_itop_choose, null); view.setTag(childIndex); view.setOnClickListener(dissertAssemtopOnclick); TextView textView = (TextView) view.findViewById(R.id.tv_fabric_select_top); textView.setText(list.get(i));// 填充数据 LinearLayout.LayoutParams param = new LinearLayout.LayoutParams(textview_width, ViewPager.LayoutParams.MATCH_PARENT); view.setLayoutParams(param); llDissertaAssermTop.addView(view);// hsvDissertaAssemTop.addView(view,i); textViews[childIndex] = textView; childIndex++; } changeTextColor(0); initAdapter(); } private void initAdapter(){ viewPager.setAdapter(mAdapter); } /** * 设置字体颜色 * * @param id */ private void changeTextColor(int id) { for (int i = 0; i < textViews.length; i++) { if (i != id) { textViews[i].setTextColor(0xff000000); } else { textViews[id].setTextColor(getResources().getColor(R.color.top_index_bg)); } } } private View.OnClickListener dissertAssemtopOnclick = new View.OnClickListener() { @Override public void onClick(View view) { clickIndex = (int) view.getTag(); changeTextColor(clickIndex); // 在改变下面的fragment viewPager.setCurrentItem(clickIndex); } }; @OnClick(R.id.iv_dissert_assem_back) public void dissertAssemBackOnclick(View view) { finish(); } class DissertationAssembleAdapter extends FragmentPagerAdapter{ public DissertationAssembleAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return DissertAssemFragment.newInstance(position + 1,null); } @Override public int getCount() { return list.size(); } }}viewpage
public class DissertAssemFragment extends BaseFragment implements AdapterView.OnItemClickListener { public static final String ARG_SECTION_NUMBER = "section_number"; public static final String DISSERTATION_ASSEMBLE_ITEM_LIST = "dissertation_assemble_item_list"; private ArrayList<String> list = new ArrayList<>(); private ListView mListView; private DissertationAssembleItemAdapter mAdapter; public DissertAssemFragment() { } public static DissertAssemFragment newInstance(int sectionNumber, ArrayList<Object> lists) { DissertAssemFragment fragment = new DissertAssemFragment(); Bundle args = new Bundle(); args.putInt(ARG_SECTION_NUMBER, sectionNumber); args.putSerializable(DISSERTATION_ASSEMBLE_ITEM_LIST, lists); fragment.setArguments(args); return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_disserta_assem, container, false); mListView = (ListView) rootView.findViewById(R.id.lv_dissert_assem); TextView textView = (TextView) rootView.findViewById(R.id.section_label); textView.setText(getString(R.string.search_hint, getArguments().getInt(ARG_SECTION_NUMBER))+getArguments().getInt(ARG_SECTION_NUMBER)); list = (ArrayList<String>) getArguments().getSerializable(DISSERTATION_ASSEMBLE_ITEM_LIST); initData(rootView); return rootView; } private void initData(View view) { mAdapter = new DissertationAssembleItemAdapter(); mListView.setAdapter(mAdapter); mListView.setOnItemClickListener(this); } @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { //点击之后跳转到相应的页面 } class DissertationAssembleItemAdapter extends BaseAdapter { LayoutInflater myInflate = LayoutInflater.from(mContext); @Override public int getCount() { if (list != null && list.size() > 0) return list.size(); else return 0; } @Override public Object getItem(int i) { if(list.size() > 0 && list != null){ return list.get(i); } return null; } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ImageView imageView ; if(view == null){ view = myInflate.inflate(R.layout.dissert_assermble_item,null); imageView = (ImageView) view.findViewById(R.id.iv_dissert_assem); view.setTag(imageView); }else { imageView = (ImageView) view.getTag(); } //设置图片 Animation animation = AnimationUtils.loadAnimation(mContext,R.anim.anim_scale); view.setAnimation(animation); return view; } }}
CustomViewPager自定义的实现
public class CustomViewPager extends ViewPager { private boolean isCanScroll = false; public CustomViewPager(Context context) { super(context); } public CustomViewPager(Context context, AttributeSet attrs) { super(context, attrs); } public void setScanScroll(boolean isCanScroll) { this.isCanScroll = isCanScroll; } @Override public void scrollTo(int x, int y) { super.scrollTo(x, y); } @Override public boolean onTouchEvent(MotionEvent arg0) { if (isCanScroll) return super.onTouchEvent(arg0); else return false; } @Override public boolean onInterceptTouchEvent(MotionEvent arg0) { if (isCanScroll) return super.onInterceptTouchEvent(arg0); else return false; } @Override public void setCurrentItem(int item, boolean smoothScroll) { super.setCurrentItem(item, smoothScroll); } @Override public void setCurrentItem(int item) { super.setCurrentItem(item); }}
参考API
0 0
- android HorizontalScrollView+ViewPager布局(viewpage不能滑动)
- Android中使用HorizontalScrollView横向滑动布局
- 实现android左右滑动效果:ViewFlipper、ViewPager、HorizontalScrollView
- Android ViewPager与仿Gallery的HorizontalScrollView互相滑动监听
- Android ViewPager+HorizontalScrollView实现标题栏滑动(腾讯新闻)
- viewpage禁止滑动--android
- viewpage禁止滑动--android
- Android Viewpage禁止滑动
- viewpage禁止滑动--android
- android 横向滑动 HorizontalScrollView
- Android HorizontalScrollView左右滑动
- Android设置ViewPager不能左右滑动
- 无限横向滑动菜单(自定义HorizontalScrollView+ViewPager)
- 解决 HorizontalScrollView 和 ViewPager 的滑动冲突
- HorizontalScrollview屏蔽掉viewpager的滑动事件。
- 横向滑动菜单:horizontalscrollview+viewpager+Fragment
- Android Viewpage禁止滑动屏幕
- Android viewpage滑动选项卡
- 数据类型
- 一字值千金---61年中国婉拒苏联借百万吨粮真相:翻译错字
- IO 的底层实现问题
- Struts2 .apk 文件下载及解决中文文件名乱码问题(转)
- document.body和document.body的区别和兼容性&&js自定义弹框的方法
- android HorizontalScrollView+ViewPager布局(viewpage不能滑动)
- 代码审计工具简单汇总
- IOS一个灵活多变的cell
- 关于Cookie中的path、domain、expire、secure属性详述
- Linux中sed的用法
- React Native入门——布局实践:开发京东客户端首页(一)
- Oracle Merge语句少用 容易引起死锁
- java中的obstract的使用
- ASP.NET Temporary ASP.NET Files 缓存 想起的可恶BUG