我有一张桌子' 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或样式。
答案 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();
}