2

目前我在活动中显示两个文本。例如:“第 1 组”和“第 2 组”。

我让用户选择文本(就像一个按钮)。

我需要确定是否选择了上面显示的文本,然后更改背景颜色。这是我使用的代码。tv.isSelected() 总是评估为“假”。任何人都可以告诉我我做错了什么。“isSelected()”方法的用途与我的用途不同吗?

TextView textView = new TextView(this);     
textView.setText("Group 1");

textView.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {
    TextView tv = (TextView) view;

    if (tv.isSelected()) {
       tv.setBackgroundColor(Color.BLUE);                   
    } else {                
       tv.setBackgroundColor(Color.WHITE);
    }

   }
});
linearLayout.addView(textView);
4

3 回答 3

3

尝试这个

OnCreate()
{
  TextView textView = new TextView(this);
  textView.setText("Group 1");

  textView.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
      textView.setSelected(true);
    }
  });

  if (textView.isSelected()) {
    textView.setBackgroundColor(Color.BLUE);                   
  } else {                
    textView.setBackgroundColor(Color.WHITE);
  }
  linearLayout.addView(textView);
}
于 2013-09-27T04:50:00.400 回答
3

尝试执行以下操作:

if (tv.getId() == textBox1Id) { 
      firstSelected = true; 
} else { firstSelected = false; }
于 2013-09-27T03:21:30.520 回答
0

您可以使用boolean变量来处理此问题:

private boolean tvSelected = false;

你的 onClick 方法会改变:

TextView textView = new TextView(this);     
textView.setText("Group 1");

textView.setOnClickListener(new View.OnClickListener() {
   @Override
   public void onClick(View view) {
    if (tvSelected) {
       textView.setBackgroundColor(Color.WHITE); 
       tvSelected = false;                  
    else {
       tv.setBackgroundColor(Color.BLUE);
       tvSelected = true;
   }
});
linearLayout.addView(textView);

isSelected()的使用而言,根据 API 文档:

可以选择或不选择视图。请注意,选择与焦点不同。视图通常在 AdapterView 的上下文中选择,例如 ListView 或 GridView;所选视图是突出显示的视图。

于 2013-09-27T03:21:01.233 回答