简单实现效果类似如上的美团筛选功能。
实现思路如下:根据外层传递进来的list创建顶部下拉条目的个数,并设置按钮互斥,选中样式。下面弹出的筛选列表通过addView的方式添加,增加里面布局的灵活性。可以添加一些筛选列表的弹出动画以增加交互。
简单实现代码如下:
单个选中控件的实现:
import android.content.Context;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
/**
* 自定义的筛选器单个view,自处理选中效果,抛出点击事件处理
* Created by ZRP on 2015/9/19.
*/
public class FilterTabView extends LinearLayout implements View.OnClickListener {
private View view;
private TextView text;
private boolean isChecked;
public FilterTabView(Context context) {
super(context);
init();
}
public FilterTabView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
private void init() {
View inflate = LayoutInflater.from(getContext()).inflate(R.layout.custom_filter_tabview, this);
inflate.setOnClickListener(this);
view = inflate.findViewById(R.id.view);
text = (TextView) inflate.findViewById(R.id.text);
}
public TextView getText() {
return text;
}
public void setText(String txt) {
text.setText(txt);
}
public void setChecked(boolean isChecked) {
this.isChecked = isChecked;
view.setSelected(isChecked);
}
public boolean isChecked() {
return isChecked;
}
private OnClickListener clickListener;
public void setOnClickListener(OnClickListener clickListener) {
this.clickListener = clickListener;
}
@Override
public void onClick(View view) {
if (clickListener != null) clickListener.onClick(this);
}
public interfac