更改动态加载的按钮的颜色onclick

时间:2018-12-13 11:49:33

标签: android

Android:我已经根据我的arraylist大小创建了动态按钮,让我们考虑10个按钮。单击按钮后,按钮的颜色将变为灰色。单击另一个按钮后,上一个按钮的颜色应重置为默认颜色。

    boolean iscolor = true;
    final LinearLayout linearLayout = view.findViewById(R.id.total_count);
    final LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
    for (int j =1;j<=datalist.size()/2;j++) {
        final Button btn = new Button(getContext());
        final int id_ = j;
        btn.setText("" + j);
        btn.setTextColor(Color.WHITE);
        btn.setMaxWidth(5);
        btn.setId(id_);
        btn.setPadding(8, 8, 8, 8);
        btn.setBackgroundColor(getContext().getResources().getColor(R.color.DarkBlue));
        linearLayout.addView(btn, params);

        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                   if (!iscolor ) {
                   btn.setBackgroundColor(getResources().getColor(R.color.DarkBlue));

                     iscolor =true;
                  }
                 else
                  {

                    btn.setBackgroundColor(getResources().getColor(R.color.gray));
                    iscolor = false;

                 }


    }});

如何在Android中恢复上次单击的按钮的颜色。

1 个答案:

答案 0 :(得分:1)

尝试一下:

  btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
 /* you need to have already stored buttons in a data structure, something like : List<Button> btns; */
             for(Button b : btns){
                  if(b.getId() == v.getId(){ b.setBackgroundColor(getResources().getColor(R.color.gray)); } else{ b.setBackgroundColor(getResources().getColor(R.color.yourdefaultcolor)); }   //no need for isColor variable


}});
linearLayout.addView(btn, params);