没有合适的资源?快使用搜索试试~ 我知道了~
本文实例为大家分享了Android二级横向菜单的实现过程.效果如上图: 这种横向的二级菜单在很多的app都有所应用.效果看起来还是非常的美观的.也算是项目需要,自己也就学了一下这个效果,首先说一下逻辑.实现的方式其实并不是很难..只不过逻辑上可能有点复杂.原理其实就是一个按钮.当触发按钮的时候弹出PopWindow.PopWindow由两个ListView构成..对两个ListView适当的适配.就可以实现这个效果了.. 实现这种效果可以有两种不同的方式..一种是直接在布局文件layout.xml中写..最上方的可以是一个按钮.也可以是多个按钮..多个按钮就可以使用RadioGro
资源推荐
资源详情
资源评论
Android实现横向二级菜单实现横向二级菜单
本文实例为大家分享了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 != null && selectedButton != tButton) {
selectedButton.setChecked(false);
}
selectedButton = tButton;
selectPosition = (Integer) selectedButton.getTag();
/** 按钮被点击后,需要触发对应的监听事件.*/
startAnimation();
if (mOnButtonClickListener != null && tButton.isChecked()) {
mOnButtonClickListener.onClick(selectPosition);
}
}
});
}
}
那么设置完了布局的样式后..只有一个ToggleButton按钮.点击后没有任何的效果.我们需要去定义一个新的View视图.用于点击
按钮后需要显示的弹出窗.那么这个弹出窗也需要自定义..
弹出窗则采用两个ListView的形式进行显示.在布局中将两个ListView进行添加.对每一个ListView设置相应的适配器.然后将这
个View添加到上面的主View当中.就可以实现当button被点击后,弹出窗在下方进行显示的效果..
ChildView() 弹出窗View的布局实现方式..
这里定义了这个View,并完成相应的初始化操作.设置对应的适配器也就完成了..
package com.example.view;
import java.util.ArrayList;
import java.util.LinkedList;
import android.content.Context;
import android.util.AttributeSet;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ListView;
import com.example.adapter.TextAdapter;
import com.example.expandtabview.R;
public class ChildView extends LinearLayout {
private ListView regionListView; //主ListView
private ListView plateListView; //子ListView
//主ListView每一个Item对应的text
private String LeftFaString[] = new String[] { "美食", "快餐小吃", "火锅", "海鲜/烧烤",
"特色菜", "香锅/烤鱼", "地方菜", "东南亚菜", "西餐", "日韩料理" };
//子ListView每一个Item对应的text..采用了二维数组的实现方式..
剩余6页未读,继续阅读
资源评论
weixin_38707862
- 粉丝: 8
- 资源: 922
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功