Android_横向滑动菜单, HorizontalScrollView,Fragment,Viewpager结合使用

来源:互联网 发布:javbus最新域名2017 编辑:程序博客网 时间:2024/06/01 08:19
第一:布局
<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){        //创建Fragment1        Fragment1 fragment1 = new Fragment1();        //创建bundle        Bundle bundle = new Bundle();        //添加值        bundle.putString("title",title);        //把值添加到Arguments中        fragment1.setArguments(bundle);        return fragment1;    }    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {        //获取Arguments        Bundle arguments = getArguments();        //获取值        String title = arguments.getString("title");        //创建textview        TextView textView = new TextView(getActivity());        //设置值        textView.setText(title);        return textView;    }}
阅读全文
0 0
原创粉丝点击