欢迎Follow我的GitHub, 关注我的CSDN. 其余参考Android目录.
转载请标明出处:
http://blog.csdn.net/xiaole0313/article/details/53674147;
本文出自:【吧主的博客】
推荐文章:
学习内容:
1.Android二级横向菜单的实现过程.效果如上图...
这种横向的二级菜单在很多的app都有所应用.效果看起来还是非常的美观的.也算是项目需要,自己也就学了一下这个效果,首先说一下逻辑.实现的方式其实并不是很难..只不过逻辑上可能有点复杂.原理其实就是一个按钮.当触发按钮的时候弹出PopWindow.PopWindow由两个ListView构成..对两个ListView适当的适配.就可以实现这个效果了..
实现这种效果可以有两种不同的方式..一种是直接在布局文件layout.xml中写..最上方的可以是一个按钮.也可以是多个按钮..多个按钮就可以使用RadioGroup去实现..下方则采用ScrollView去实现也是可以的..
不过我还是说一下第二种方式..直接用Java去写这个布局..通过使用自定义控件的方式实现这个效果..既然是自定义,那么首先我们需要继承一个布局.布局可以使用LinearLayout或者RelativeLayout.
setValue()方法..
setValue()方法是自定义的方法..主要是用于加载布局.以及在布局当中添加相关的View.没有加载任何的xml文件..
/** * @param textArray: ListView中item对应的text值的集合.. * @param viewArray: 当前Layout中需要加入的View.. * */ @SuppressLint("ResourceAsColor") public void setValue(ArrayList<String> textArray, ArrayList<View> viewArray) { if (mContext == null) { return; } LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE); mTextList = textArray; for (int i = 0; i < viewArray.size(); i++) { //这里就添加了一个View.. final RelativeLayout r = new RelativeLayout(mContext); int maxHeight = (int) (displayHeight * 0.5); //定义布局的高度.. RelativeLayout.LayoutParams rl = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, maxHeight); r.addView(viewArray.get(i), rl); //在布局中添加View并指定参数 mViewList.add(r); r.setTag(SMALL); //定义最上方的按钮,并在布局中添加这个按钮。并设置按钮的text ToggleButton tButton = (ToggleButton) inflater.inflate(R.layout.toggle_button, this, false); addView(tButton); mToggleList.add(tButton); tButton.setTag(i); tButton.setText(mTextList.get(i)); //用于实现当PopWindow显示时.再次点击收回PopWindow r.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { onPressBack(); } }); r.setBackgroundColor(mContext.getResources().getColor(R.color.popup_main_background)); //当按钮被点击后需要触发的监听 tButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { ToggleButton tButton = (ToggleButton) view; /** 如果当前点击的按钮与上次的点击不同.则设置当前的按钮处于点击状态 */ if (selectedButton !=