关于自定义的view响应触摸消息

坐在悬崖上看夕阳 2010-10-12 02:56:41
public class mainTextView extends View implements OnTouchListener{
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
Toast.makeText(v.getContext(), "触摸", Toast.LENGTH_SHORT).show();
break;
default :
break;
}
return true;
}
}//自定义的VIEW类
在活动中使用这个类

public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mainTextView myView = new mainTextView(this);
setContentView(myView);


但运行的结果:当鼠标触摸时,并没有显示“触摸”的字样。
调试时,根本没有进onTouch这个函数

这是什么原因?求高手解惑!
...全文
58 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
也就是说,自定义View类自己响应消息是做不到了,必须在类的外部设置。
这一点和VC不一样。呵呵!
salever 2010-10-13
  • 打赏
  • 举报
回复
响应触摸的没有,我这倒是有一个点击事件的处理,贴上来给你看看吧
public class HelloWorld extends Activity {

private OnClickListener listener1;
private OnClickListener listener2;
private OnClickListener listener3;
private OnClickListener listener4;

private Button button1, button2, button3, button4;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

listener1 = new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(HelloWorld.this, ActivityFrameLayout.class);
setTitle("Frame layout");
startActivity(intent);
}
};

listener2 = new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(HelloWorld.this, RelativeLayoutActivity.class);
setTitle("Relative layout");
startActivity(intent);
}
};

listener3 = new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(HelloWorld.this, LayoutActivity.class);
setTitle("Layout");
startActivity(intent);
}
};

listener4 = new OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(HelloWorld.this, TableLayoutActivity.class);
setTitle("Table Layout");
startActivity(intent);
}
};

setContentView(R.layout.main);
button1 = (Button)findViewById(R.id.Button01);
button1.setOnClickListener(listener1); //一定要这一步吧?

button2 = (Button) findViewById(R.id.Button02);
button2.setOnClickListener(listener2);

button3 = (Button) findViewById(R.id.Button03);
button3.setOnClickListener(listener3);

button4 = (Button) findViewById(R.id.Button04);
button4.setOnClickListener(listener4);
}
}



看看注释的部分,你是不是该让监听器知道坚挺谁呢?
salever 2010-10-13
  • 打赏
  • 举报
回复
VC也是需要定义的,只是你不必关心在哪定义和怎么定义而已。对于Java UI,必须指定的,android跟java UI编程差不多的
  • 打赏
  • 举报
回复
大哥 举个例子!



salever 2010-10-12
  • 打赏
  • 举报
回复
这么写你的onTouch啥时候触发?

是不是在哪忘记了触发这个监听器?

58,452

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧