Androd TextView 点击变化效果

来源:互联网 发布:linux ssh远程工具 编辑:程序博客网 时间:2024/06/05 04:06

这里写图片描述

这里写图片描述

思路:
1.先自定义一个View
2.判断TextView是否点击,这个时候需要一个Type来标识

先看下自定义View

public class BottonSelectLayout extends LinearLayout {    private ArrayList<BottonItem> bottonItems = getResource();    private GridView mGridview;    private BottonItem bottonItem;    private MlayoutAdapter adapter;    private mlayoutClickListener mListener;    public interface mlayoutClickListener {        public void onItemClick(BottonItem mEntity);    }    public void setMLayoutClickListener(mlayoutClickListener listener) {        mListener = listener;    }    private void init() {        if (isInEditMode())            return;        View view = LayoutInflater.from(getContext()).inflate(R.layout.gv, this);        mGridview = (GridView) view.findViewById(R.id.gridView);        adapter = new MlayoutAdapter();        mGridview.setAdapter(adapter);        mGridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {            @Override            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {                if (bottonItem != null) {                    bottonItem.setType("false");                }                bottonItem = bottonItems.get(position);                bottonItem.setType("true");                adapter.notifyDataSetChanged();                if (mListener != null) {                    mListener.onItemClick(bottonItem);                }            }        });    }    public BottonSelectLayout(Context context) {        super(context);        init();    }    public BottonSelectLayout(Context context, @Nullable AttributeSet attrs) {        super(context, attrs);        init();    }    public BottonSelectLayout(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);        init();    }    public class MlayoutAdapter extends BaseAdapter {        @Override        public int getCount() {            return bottonItems.size();        }        @Override        public BottonItem getItem(int position) {            return bottonItems.get(position);        }        @Override        public long getItemId(int position) {            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            ViewHolder holder = null;            if (convertView == null) {                convertView = LayoutInflater.from(getContext()).inflate(R.layout.layout_botton_select, null);                holder = new ViewHolder();                holder.textView = (TextView) convertView.findViewById(R.id.textview);                convertView.setTag(holder);            } else {                holder = (ViewHolder) convertView.getTag();            }            BottonItem entity = getItem(position);            holder.textView.setText(entity.getName());            //判断textview是否被点击,true点击,false没点击            if ("true".equals(entity.getType())) {                holder.textView.setBackgroundColor(getResources().getColor(R.color.white));                holder.textView.setTextColor(getResources().getColor(R.color.f45d5d));            } else {                holder.textView.setBackgroundColor(getResources().getColor(R.color.c4));                holder.textView.setTextColor(getResources().getColor(R.color.white));            }            return convertView;        }        class ViewHolder {            TextView textView;        }    }    //如果是后台返回的数据可以在这里接入    public ArrayList<BottonItem> getResource() {        ArrayList<BottonItem> list = new ArrayList<BottonItem>();        BottonItem entity = new BottonItem("红烧鱼");        entity.setType("false");        list.add(entity);        BottonItem entity1 = new BottonItem("三文鱼");        entity1.setType("false");        list.add(entity1);        BottonItem entity2 = new BottonItem("鲤鱼");        entity1.setType("false");        list.add(entity2);        return list;    }}
public class BottonItem  implements Serializable {    private String Type;//判断是否点击    private String name;    public BottonItem(String name) {        this.name = name;    }    public String getType() {        return Type;    }    public void setType(String type) {        Type = type;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }}