可点击的textview不起作用

时间:2014-01-20 03:38:43

标签: android onclick textview

我已经四处搜索了如何使textview可点击,我正在做他们所说的一切,但onClick方法仍然没有被调用。这是我的活动代码:

public void onClick(View v) {
    switch(v.getId()) {
    case R.id.month_january:
        Log.w("onclick", "yes");
        TextView temp = (TextView) findViewById(v.getId());
        temp.setTextColor(Color.GRAY);
        switchNumberDays(31);
        break;
    case R.id.month_february:...

我将日志放入以查看当我单击textview时是否正在调用onClick,并且没有记录任何内容。这是我的特定文本视图的xml:

<TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20dp"
            android:layout_marginRight="20dp"
            android:clickable="true"
            android:id="@+id/month_january"
            android:text="January" />

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

嗨,请以这种方式做,因为我认为你的听众在你的代码中没有被正确使用..

要使TextView可单击,只需将其添加到TextView:

android:clickable="true"

之后,您可以使用以下命令将onClickListener设置为:

yourTextView.setOnClickListener(new OnClickListener() {

@Override
        public void onClick(View v) {
            // do your work here
        }
    });

或另一种方式也是

public class sticks extends Activity implements View.OnTouchListener { 
  private TextView tv1; 
  private TextView tv2;
  private TextView tv3     

  @Override 
  public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    tv1 = (TextView) findViewById(R.id.tv1); 
    tv2 = (TextView) findViewById(R.id.tv2); 
    tv3 = (TextView) findViewById(R.id.tv3); 

    // bind listeners
    tv1.setOnTouchListener(this); 
    tv2.setOnTouchListener(this); 
    tv3.setOnTouchListener(this); 

  } 

  @Override 
  public boolean onTouch(View v, MotionEvent event) { 
    // check which textview it is and do what you need to do

    // return true if you don't want it handled by any other touch/click events after this
    return true; 
  } 
}

答案 1 :(得分:1)

由于您的班级正在实施onClickListener界面,因此请务必在创建后将其注册到textview。

public class someActivity extends Activity implements View.OnClickListener {
    public void onCreate(Bundle savedInstanceState) {
        TextView textView = new TextView();
        textView.setOnClickListener(this);
    }
}