Android_横向滑动菜单, HorizontalScrollView,Fragment,Viewpager结合使用
2017-09-12 11:17
661 查看
第一:布局
<HorizontalScrollView android:id="@+id/hs" android:layout_width="match_parent" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/linearlayout" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"></LinearLayout> </HorizontalScrollView> <android.support.v4.view.ViewPager android:id="@+id/viewpager" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/hs"></android.support.v4.view.ViewPager>
第二:主页面中
package activity.example.com.a09_12; import android.graphics.Color; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.view.ViewGroup; import android.widget.HorizontalScrollView; import android.widget.LinearLayout; import android.widget.TextView; import java.util.ArrayList; import java.util.List; public class MainActivity extends AppCompatActivity { private String[] titles; private List<TextView> list; private HorizontalScrollView hs; private LinearLayout linearlayout; private ViewPager viewpager; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取id hs = (HorizontalScrollView)findViewById(R.id.hs); linearlayout = (LinearLayout)findViewById(R.id.linearlayout); viewpager = (ViewPager)findViewById(R.id.viewpager); //创建数组,存放标题 titles = new String[] { "头条", "娱乐", "科技", "信息", "八卦", "北京", "上海", "天津","重庆", "大大燕网" }; //创建集合,存放textview list = new ArrayList<TextView>(); //创建textview for (int i = 0; i < titles.length; i++) { //创建textview TextView textView = new TextView(MainActivity.this); textView.setText(titles[i]); textView.setTextSize(20); textView.setId(i+1000); //点击事件 textView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int id = view.getId(); viewpager.setCurrentItem(id-1000); } }); //刚进程序第一个默认红色,其他为黑色 if(i ==0){ textView.setTextColor(Color.RED); }else { textView.setTextColor(Color.BLACK); } LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); layoutParams.setMargins(20,10,20,10); //添加到布局中 linearlayout.addView(textView,layoutParams); //添加到集合 list.add(textView); } //为viewpager设置适配器 viewpager.setAdapter(new Myadapter(getSupportFragmentManager())); //viewpager的监听 viewpager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { //滑动改变颜色 @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { //list中存的是 textview for (int i = 0; i < list.size(); i++) { if(position==i){ list.get(i).setTextColor(Color.RED); }else{ list.get(i).setTextColor(Color.BLACK); } } //获取当前的textview TextView textView = list.get(position); //width是每次滑动的距离 int width = textView.getWidth()+10; //让scrollView滑动 滑动距离是textview之间的间距 hs.scrollTo(width*position,0); } @Override public void onPageSelected(int position) { } @Override public void onPageScrollStateChanged(int state) { } }); } class Myadapter extends FragmentPagerAdapter{ public Myadapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return Fragment1.getinstance(list.get(position).getText().toString()); } @Override public int getCount() { return list.size(); } } }
第三:自建Fragment中
package activity.example.com.a09_12;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v4.app.Fragment;import android.support.v4.media.session.PlaybackStateCompat;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.widget.TextView;/*** Created by 壹颗大金星 on 2017/9/12.*/public class Fragment1 extends Fragment{public static Fragment getinstance(String title){//创建Fragment1Fragment1 fragment1 = new Fragment1();//创建bundleBundle bundle = new Bundle();//添加值bundle.putString("title",title);//把值添加到Arguments中fragment1.setArguments(bundle);return fragment1;}@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {//获取ArgumentsBundle arguments = getArguments();//获取值String title = arguments.getString("title");//创建textviewTextView textView = new TextView(getActivity());//设置值textView.setText(title);return textView;}}
相关文章推荐
- Android_横向滑动菜单, HorizontalScrollView,Fragment,Viewpager结合使用
- Android_横向滑动菜单, HorizontalScrollView,Fragment,Viewpager结合使用 +pullToRefreshListView
- 横向滑动菜单,HorizontalScrollView、fragment、Viewpager结合使用
- 横向滑动菜单, HorizontalScrollView,fragment,Viewpager结合使用
- 横向滑动菜单, HorizontalScrollView,fragment,Viewpager结合使用
- 横向滑动菜单,HorizontalScrollView,fragment,Viewpager结合使用
- 横向滑动菜单, HorizontalScrollView,fragment,Viewpager结合使用
- 横向滑动菜单, HorizontalScrollView,fragment,Viewpager结合使用
- 横向滑动菜单:horizontalscrollview+viewpager+Fragment
- Android ViewPager、Fragment、组合控件结合使用(滑动切换,点击导航切换)
- Android 使用TabLayout、ViewPager和Fragment实现顶部菜单可滑动切换
- 仿网易新闻APP(五)——无限横向滑动菜单(自定义HorizontalScrollView+ViewPager)
- Android 自定义 HorizontalScrollView 横向滑动效果
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- ViewPager和Fragment结合,利用(HorizontalScrollView)实现指示器与ViewPager同时滑动的动态效果
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果