动态设置textview背景颜色

时间:2016-08-17 20:51:52

标签: android textview tablerow

我有一张桌子' D'每行中有4个文本视图。我已经设置了onlicklistener并且它有效。我想要的是让用户按下该行的任何文本视图,文本背景更改为ltgray。我将解决每个textview或整行是否设置。 现在,无论用户按什么电视,只有最后一个textview设置为ltgray。基于代码,我的假设是我可以通过代码中的x索引将每个电视设置为onclick值:但是这不起作用。我不能通过x?访问每个textViewB。该代码显示了tvB为其他情况设置,但这是设置所有textview的文本背景的新设置。我不想要行背景。这很简单而且有效。但只有边界显示。我需要的是该表行中所有4台电视的更改文本背景。 提前谢谢你:

try {
        for(int x=0 ; x<loopCount; x++){
            TableRow.LayoutParams params = new TableRow.LayoutParams(headerCellsWidth[x + 1], LayoutParams.MATCH_PARENT);
            params.setMargins(2, 2, 0, 0);

            Log.d("Loadrunner", "info[x] " + x + "  " + info[x]);
            final TextView textViewB = this.bodyTextView(info[x]);
            textViewB.setTextColor(0xFF000000);
            tableRowForTableD.addView(textViewB, params);
            //*************************************** Clickable cell
            tableRowForTableD.setClickable(true);
            tableRowForTableD.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    //tableRowForTableD.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_bright));
                    textViewB.setBackgroundColor(Color.LTGRAY);
                    Toast.makeText(getContext(), "Item on aisle select/deselect", Toast.LENGTH_SHORT).show();
                }
            });
            tableRowForTableD.setOnLongClickListener(new View.OnLongClickListener() {
                @Override
                public boolean onLongClick(View v) {
                    //tableRowForTableD.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_bright));
                    Toast.makeText(getContext(), "Item on aisle Edit", Toast.LENGTH_SHORT).show();
                return true;
                }
            });
            //***************************************************************
        }
    }   catch(Exception e){
        e.printStackTrace();
    }

全部用代码完成。没有xml或样式。

1 个答案:

答案 0 :(得分:1)

yourView.setBackgroundColor(ContextCompat.getColor(getActivity(), R.color.your_color));

yourView.setBackgroundColor(getResources().getColor(R.color.your_color));

yourView.setBackgroundColor(Color.parseColor("#ffffff"));

我相信你想要的是 onClickListener 。您已经拥有该视图,只需更改该视图即可。例如:

@Override
public void onClick(View v) {
    ViewGroup row = (ViewGroup) v.getParent(); 
    for (int itemPos = 0; itemPos < row.getChildCount(); itemPos++) { 
        View view = row.getChildAt(itemPos); 
        if (view instanceof TextView) { 
            textView = (TextView) view;
            textView.setBackgroundColor(Color.LTGRAY);
      }
    } 
    Toast.makeText(getContext(), "Item on aisle select/deselect", Toast.LENGTH_SHORT).show();
}