我有一位正在处理Touch点击的经理。
为了拥有可聚焦管理器,我有一个充当背景且可聚焦的场,该场在聚焦时会改变颜色。
问题是,我在这个管理器上有多个字段(不可聚焦),比如LabelField,BitmapField等......
如果用户单击其中一个不可聚焦的字段,则不会考虑单元格上的单击。 但是,如果用户在两个不可聚焦的字段之间点击(然后单击背景字段),则会考虑点击并且工作正常......
我需要某种点击设置为true,我该怎么做?
P.S。 :我不想让所有Field都可以聚焦,因为当使用轨迹球时,它会遍历每个Field,我只想选择整个管理器,而不是内部元素。
答案 0 :(得分:2)
管理员实际上会获得点击事件 - 通常它会传递它们。但是如果你愿意,你可以处理它们。以下代码演示了我发现的最简单的方法,以确保我按照自己的意愿处理所有内容。在触摸屏和非触摸屏手机上试用。
VerticalFieldManager testVFM = new VerticalFieldManager(Manager.USE_ALL_WIDTH) {
protected boolean touchEvent(TouchEvent message) {
int x = message.getX( 1 );
int y = message.getY( 1 );
if( x < 0 || y < 0 || x >= getExtent().width || y >= getExtent().height ) {
// Outside the field
return false;
}
if ( message.getEvent() == TouchEvent.UNCLICK ) {
Status.show("Manager Clicked");
return true;
}
return super.touchEvent(message);
}
};
LabelField testlab = new LabelField("test", LabelField.FIELD_HCENTER);
testVFM.add(testlab);
LabelField testlab2 = new LabelField("test2", LabelField.FIELD_HCENTER);
testVFM.add(testlab2);
testVFM.add(new NullField() {
protected boolean navigationClick(int status, int time){
Status.show("NullField Clicked");
return true;
}
}); // So Manager can get focus