我已经四处搜索了如何使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" />
提前感谢您的帮助!
答案 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);
}
}