用ViewPager制作导航栏,导航栏中的内容动态添加
来源:互联网 发布:数据圈怎么登录 编辑:程序博客网 时间:2024/05/17 06:24
本功能中的导航栏一共有5个栏目,要求一页显示4个,另外一个在另一页显示,并且在友盟中设置了在线参数,当在线参数为1时,家庭相册显示,当在线参数为0时,家庭相册不显示。所以导航栏根据在线参数不同,要显示4个或5个栏目。
代码:
@BindView(R.id.message_board) LinearLayout messageBoard;//留言板 @BindView(R.id.album_menu) LinearLayout albumMenu;//家庭相册 @BindView(R.id.nutrient_index) LinearLayout nutrientIndex;//营养指数 @BindView(R.id.basket) LinearLayout basket;//客服//馨厨问答// @BindView(R.id.expiration_reminder)// LinearLayout expirationReminder;//美食天地 @BindView(R.id.common_problem) LinearLayout commonProblem;//常见问题
private List<LinearLayout> menuList;
public void initMenuView() { LogUtil.d(TAG,"photoAlbumIsShow="+photoAlbumIsShow); menuList = new ArrayList<LinearLayout>(); //留言板 ViewParent vg = messageBoard.getParent(); if(vg != null){ ViewGroup group = (ViewGroup) vg; group.removeView(messageBoard); } //新鲜指数 ViewParent vg2 = nutrientIndex.getParent(); if(vg != null){ ViewGroup group = (ViewGroup) vg2; group.removeView(nutrientIndex); } //客服 ViewParent vg3 = basket.getParent(); if(vg != null){ ViewGroup group = (ViewGroup) vg3; group.removeView(basket); } //常见问题 ViewParent vg4 = commonProblem.getParent(); if(vg != null){ ViewGroup group = (ViewGroup) vg4; group.removeView(commonProblem); } //美食天地// ViewParent vg4 = expirationReminder.getParent();// if(vg != null){// ViewGroup group = (ViewGroup) vg4;// group.removeView(expirationReminder);// } if(photoAlbumIsShow.equals("1")){ llMenu1.addView(messageBoard,0); //家庭相册 ViewParent vg1 = albumMenu.getParent(); if(vg != null){ ViewGroup group = (ViewGroup) vg1; group.removeView(albumMenu); } llMenu1.addView(albumMenu,1); llMenu1.addView(nutrientIndex,2); llMenu1.addView(basket,3); llMenu2.addView(commonProblem,0); menuList.add(llMenu1); menuList.add(llMenu2); }else{ llMenu1.addView(messageBoard,0); llMenu1.addView(nutrientIndex,1); llMenu1.addView(basket,2); llMenu1.addView(commonProblem,3); menuList.add(llMenu1); albumMenu.setVisibility(View.GONE); llMenu2.setVisibility(View.GONE); } if (homeMemuAdapter == null) { homeMemuAdapter = new HomeMemuAdapter(menuList, mContext, llMenuPoints); menuPager.setAdapter(homeMemuAdapter); } else { } menuPager.setOnPageChangeListener(new MenuPagerChangeListner()); menuPager.setCurrentItem(0); initMenuPoints(); } void initMenuPoints() { llMenuPoints.removeAllViews(); for (int i = 0; i < menuList.size(); i++) { ImageView img = new ImageView(mContext); LinearLayout.LayoutParams margin = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); //设置每个小圆点距离左边的间距 margin.setMargins(8, 0, 0, 0); img.setLayoutParams(new ViewGroup.LayoutParams(7, 7)); if (i == 0) { img.setImageResource(R.drawable.point_home_sel);// img.setImageDrawable(getResources().getDrawable(R.drawable.point_gray));// img.setBackground(getResources().getDrawable(R.drawable.point_gray));// img.setBackgroundColor(getResources().getColor(R.color.text_sum)); } else { img.setImageResource(R.drawable.point_home_nor); } if (menuList.size() > 1) {//多个页面时显示 llMenuPoints.addView(img, margin); } } }
注意:添加各个栏目到页面时,先要获取它的父控件,然后移除父控件中的view,否则会报java.lang.IllegalStateException异常。
xml布局:
<RelativeLayout android:layout_width="match_parent" android:layout_height="93dp"> <android.support.v4.view.ViewPager android:id="@+id/menuPager" android:layout_width="match_parent" android:layout_height="93dp"> </android.support.v4.view.ViewPager> <LinearLayout android:id="@+id/ll_menu_points" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:layout_marginBottom="9dp" android:orientation="horizontal" /> </RelativeLayout> <LinearLayout android:id="@+id/ll_menu1" android:layout_width="match_parent" android:layout_height="93dp" android:gravity="center_vertical" android:weightSum="4" android:layout_gravity="center" android:layout_marginTop="12dp" android:layout_marginBottom="@dimen/dp_11" android:orientation="horizontal"> </LinearLayout> <LinearLayout android:id="@+id/message_board" android:layout_width="0dp" android:layout_weight="1" android:gravity="center" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:layout_width="33dp" android:layout_height="33dp" android:src="@drawable/message_board" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/tft_function_message" android:textSize="14sp" android:layout_marginTop="11dp" android:textColor="@color/home_text" /> </LinearLayout> <LinearLayout android:id="@+id/album_menu" android:layout_width="0dp" android:layout_weight="1" android:gravity="center" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:layout_width="33dp" android:layout_height="33dp" android:src="@drawable/icon_album" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="家庭相册" android:textSize="14sp" android:layout_marginTop="11dp" android:textColor="@color/home_text" /> </LinearLayout> <LinearLayout android:id="@+id/nutrient_index" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical"> <ImageView android:layout_width="33dp" android:layout_height="33dp" android:src="@drawable/nutrient_index1" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="11dp" android:text="新鲜指数" android:textSize="14sp" android:textColor="@color/home_text" /> </LinearLayout> <LinearLayout android:id="@+id/basket" android:layout_width="0dp" android:layout_weight="1" android:gravity="center" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:layout_width="33dp" android:layout_height="33dp" android:src="@drawable/link_question" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="客服" android:textSize="14sp" android:layout_marginTop="11dp" android:textColor="@color/home_text" /> </LinearLayout> <LinearLayout android:id="@+id/ll_menu2" android:gravity="center_vertical" android:weightSum="4" android:layout_gravity="center" android:layout_width="match_parent" android:layout_height="93dp"> </LinearLayout> <LinearLayout android:id="@+id/expiration_reminder" android:layout_width="wrap_content" android:visibility="gone" android:gravity="center" android:layout_marginLeft="@dimen/dp_20" android:layout_height="wrap_content" android:orientation="vertical"> <ImageView android:layout_width="33dp" android:layout_height="33dp" android:src="@drawable/delesious_food1" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="美食天地" android:textSize="14sp" android:layout_marginTop="11dp" android:textColor="@color/home_text" /> </LinearLayout> <LinearLayout android:id="@+id/common_problem" android:layout_width="0dp" android:layout_weight="1" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical"> <ImageView android:layout_width="33dp" android:layout_height="33dp" android:src="@drawable/control_ic_common_question" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="11dp" android:text="@string/common_question" android:textColor="@color/home_text" android:textSize="14sp" /> </LinearLayout>布局中的各个子栏目,都要作为单独的布局放在大的LinearLayout外面。
adapter代码:
public class HomeMemuAdapter extends PagerAdapter { private Context mContext; private LinearLayout ll_menu_points; private List<LinearLayout> linearLayoutList; public HomeMemuAdapter(List<LinearLayout> list,Context mContext, LinearLayout ll_menu_points) { this.linearLayoutList = list; this.mContext = mContext; this.ll_menu_points = ll_menu_points; } @Override public int getCount() { if(linearLayoutList.size() == 1){ return 1; }else { return linearLayoutList.size(); } } @Override public boolean isViewFromObject(View view, Object object) { return view == object; } @Override public void destroyItem(ViewGroup container,int position,Object object){// container.removeView(imgs.get(position%imgs.size()));// if(position >= bannerItems.size()){// position = position%bannerItems.size();// }// container.removeView(imgs.get(position)); } public Object instantiateItem(ViewGroup container, int position){ if(position >= linearLayoutList.size()){ position = position%linearLayoutList.size(); } LinearLayout ll= linearLayoutList.get(position); //如果View已经在之前添加到了一个父组件,则必须先remove,否则会抛出IllegalStateException。 ViewParent vp = ll.getParent(); if(vp != null){ ViewGroup viewGroup = (ViewGroup) vp; viewGroup.removeView(ll); } if(position == 0){ ll.setGravity(Gravity.CENTER_VERTICAL); }else if(position == linearLayoutList.size()-1){ LogUtil.d("HOME","==================="); } container.addView(ll); return ll; }}
0 0
- 用ViewPager制作导航栏,导航栏中的内容动态添加
- 用ViewPager制作导航栏
- ViewPager添加导航栏
- 用jquery中动态添加删除class制作导航栏
- ViewPager与RadioGroup制作导航栏
- RadioGroup+ViewPager制作的底部导航栏
- ViewPager+Fragment制作侧滑导航栏
- 为ViewPager添加选项卡导航栏
- 动态给ViewPager添加Indicator导航
- ViewPager导航栏
- ViewPager制作导航页
- Android之RadioGroup+ViewPager制作的底部导航栏
- Android之RadioGroup+ViewPager制作的底部导航栏
- Android之RadioGroup+ViewPager制作的底部导航栏
- 导航栏制作资源
- css制作导航栏
- 制作导航栏
- 导航栏制作
- EditText使用总结-2
- nginx.conf设置
- Linux系统搭建git服务器
- Apache HTTP 目录访问权限配置
- spark程序读写protobuf格式数据(java语言)
- 用ViewPager制作导航栏,导航栏中的内容动态添加
- IMWeb训练营作业1
- highchart图表drilldown钻取功能及event点击事件添加(1)
- 157
- 二叉树的前序遍历
- select返回一个固定值
- 关于Github如何创建公钥 SSH key
- Linux下多线程
- 文本文件的词频统计(包含excludes排除库)