<--!主布局>
<LinearLayout
android:layout_width="match_parent"android:layout_height="50dp"
android:orientation="horizontal">
<HorizontalScrollView
android:id="@+id/nav_HorizontalScrollView"
android:layout_width="0dp"
android:layout_height="50dp"
android:layout_weight="9"
android:fillViewport="true">
<LinearLayout
android:id="@+id/nav_ll"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
</LinearLayout>
</HorizontalScrollView>
</LinearLayout>
<android.support.v4.view.ViewPager
android:id="@+id/nav_vp"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1" />
</LinearLayout>
=====================================================================
public class MainActivity extends FragmentActivity {
private HorizontalScrollView hsv;// 横向滑动的控件
private LinearLayout nav_ll;// 线性布局容器
private ViewPager nav_vp;
private int itemWidth;// 获取每个item的宽度
private int selectItemIndex = 0;
private int screenWidth;
private List<String> type;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setSlidingMenu();
type = MyTools.getType();
// 找控件
hsv = (HorizontalScrollView) findViewById(R.id.nav_HorizontalScrollView);
hsv.setHorizontalScrollBarEnabled(false);
nav_ll = (LinearLayout) findViewById(R.id.nav_ll);
nav_vp = (ViewPager) findViewById(R.id.nav_vp);
// 设置导航栏菜单
setNav();
// 设置viewpager
setViewPager();
}
private void setViewPager() {
// 实例化list集合存放fragment
List<Fragment> fragmentList = new ArrayList<Fragment>();
for (int i = 0; i < MyTools.getType().size(); i++) {
MyFragment frame = new MyFragment(type.get(i));
// 存入list集合
fragmentList.add(frame);
}
// 设置vp适配器
MyFragmentAdapter fragmentAdapter = new MyFragmentAdapter(
getSupportFragmentManager(), fragmentList);
nav_vp.setAdapter(fragmentAdapter);
// 设置vp滑动监听
nav_vp.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
nav_vp.setCurrentItem(position);
selectType(position);
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
private void setNav() {
// 获得屏幕总宽度
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
screenWidth = metrics.widthPixels;
// 设置每一个item的宽度
itemWidth = screenWidth / type.size();
Log.i("---->", MyTools.getType().toString());
for (int i = 0; i < MyTools.getType().size(); i++) {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
itemWidth, RadioGroup.LayoutParams.WRAP_CONTENT);
// 设置外边距
params.leftMargin = 10;
params.rightMargin = 10;
// 创建TextView的实例
TextView localTextView = new TextView(this);
// 设置tv的属性
localTextView.setText(MyTools.getType().get(i));
localTextView.setTextSize(16.0f);
localTextView.setBackgroundResource(R.drawable.nav_tv_bg);
localTextView.setPadding(5, 15, 5, 15);
localTextView.setGravity(Gravity.CENTER);
if (selectItemIndex == i) {
localTextView.setSelected(true);
}
// 设置每一个tv的监听
localTextView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
for (int i = 0; i < nav_ll.getChildCount(); i++) {
TextView tv = (TextView) nav_ll.getChildAt(i);
if (tv == v) {
tv.setSelected(true);
nav_vp.setCurrentItem(i);
} else {
tv.setSelected(false);
}
}
}
});
nav_ll.addView(localTextView, i, params);
}
}
public void selectType(int tab_position) {
selectItemIndex = tab_position;
// 通过自动滚动
for (int i = 0; i < nav_ll.getChildCount(); i++) {
TextView tv0 = (TextView) nav_ll.getChildAt(tab_position);
int k = tv0.getMeasuredWidth();
int l = tv0.getLeft();
int i2 = l + k / 2 - screenWidth / 2;// 计算要滚动到的位置
hsv.smoothScrollTo(i2, 0);
View view = nav_ll.getChildAt(i);
if (tab_position == i) {
view.setSelected(true);
} else {
view.setSelected(false);
}
}
// 判断哪一个tv被选中设置背景颜色
for (int i = 0; i < nav_ll.getChildCount(); i++) {
}
}
/**
*
*/
private void setSlidingMenu() {
SlidingMenu menu=new SlidingMenu(this);
menu.setMode(SlidingMenu.RIGHT); //2
menu.setMenu(R.layout.leftmenu); //------!!!为侧滑菜单设置布局
// 设置触摸屏幕的模式
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);//3滑出菜单的模式
menu.setShadowWidth(50); //4
// menu.setShadowDrawable(R.drawable.shadow); //5是个渐变shape文件
// 设置滑动菜单打开后内容页所留的可滑动部分的宽为80dp
menu.setBehindOffset(120);
// 设置渐入渐出效果的变化程度1.0为关闭时纯黑
menu.setFadeDegree(1.0f);
menu.setBehindScrollScale(0.2f);
//7
// 把SlidingMenu附加在Activity上 可取值为:SLIDING_CONTENT,SLIDING_WINDOW
// SlidingMenu.SLIDING_WINDOW:菜单拉开后高度是全屏的
// SlidingMenu.SLIDING_CONTENT:菜单拉开后高度是不包含Title/ActionBar的内容区域
menu.attachToActivity(this, SlidingMenu.SLIDING_WINDOW);//8 左菜单有title栏-------!!!
}
}
==========================================================
public class MyFragment extends Fragment {
String text;
public MyFragment(String text) {
this.text = text;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = View.inflate(getActivity(), R.layout.fragment, null);
TextView tv = (TextView) view.findViewById(R.id.tv);
tv.setText(text);
return view;
}
}
==========================================================
public class MyFragmentAdapter extends FragmentPagerAdapter {
private List<Fragment> fragmentList;
public MyFragmentAdapter(FragmentManager fm, List<Fragment> fragmentList) {
super(fm);
this.fragmentList = fragmentList;
}
@Override
public Fragment getItem(int position) {
return fragmentList.get(position);
}
@Override
public int getCount() {
return fragmentList.size();
}
}
===============================================================
public static List<String> getType() {
List<String> typeList = Arrays.asList("推荐", "热点", "北京", "社会", "娱乐", "科技", "视频");
// Set<String> keySet = getData().keySet();
// Collection<String> values = getData().values();
// Iterator<String> stringIterator = values.iterator();
// while (stringIterator.hasNext()){
// String next = stringIterator.next();
// }
// TreeSet<String> treeSet=new TreeSet<>();
// treeSet.addAll(keySet);
//
//
// Iterator<String> iterator = keySet.iterator();
// while (iterator.hasNext()) {
// String next = iterator.next();
// typeList.add(next);
// }
return typeList;
}