
在指定的控件底下实现下拉框,就像登录QQ时可以在下拉框中选择自己QQ号。
实现思路:要想在指定的控件的底下实现下拉效果,首先,我们得确定要显示的起始坐标,首先得到控件的坐标,然后再由控件的坐标向下移动它本身的高度就是下拉框要显示的位置,得到显示位置就好办了。。在坐标的位置显示一个PopupWindow,布局文件为一个ListView就可以了,宽度为上面控件的宽度,高度就不用管了
getRowX:触摸点相对于屏幕的坐标
getX: 触摸点相对于按钮的坐标
getRawX()获取的是屏幕上的原生(original raw)x坐标,而getX(int pointerIndex)只是说获取的是指定的触控点坐标,getX()就是获取第一个触控点的坐标。所以,getRawX()就是说,获取的是相对于屏幕左上角的x坐标,而getX()是获取相对控件左上角的x坐标。
不嫌弃的话把下面这两个函数放到你的UIWidget里面。试用了一下好像可以,没把握=。=……[code]CCPoint UIWidget::getAbsolutePosition(){
CCPoint ret = getPosition();
CCNode cobj;
UIWidget uobj = this;
UIWidget tuobj;
bool lastIsUI = true;
while(true){
if(lastIsUI){
tuobj = dynamic_cast(uobj->getWidgetParent());
if(tuobj != NULL){
uobj = tuobj;
retx += uobj->getPosition()x;
rety += uobj->getPosition()y;
lastIsUI = true;
}else{
cobj = dynamic_cast(uobj->getUILayer());
if(cobj == NULL)break;
retx += cobj->getPosition()x;
rety += cobj->getPosition()y;
lastIsUI = false;
}
}else{
cobj = dynamic_cast(cobj->getParent());
if(cobj == NULL)break;
retx += cobj->getPosition()x;
rety += cobj->getPosition()y;
}
}
return ret;
}[/code][code]UILayer UIWidget::getUILayer(){
return m_pUILayer;
}[/code]然后通过getAbsolutePosition就可以获得一个表示坐标的ccpoint了。
以上就是关于安卓如何使下拉菜单工作,而使下面的内容在点击时向下移动全部的内容,包括:安卓如何使下拉菜单工作,而使下面的内容在点击时向下移动、android MotionEvent中getX和getRawX的区别、如何获取某个在层容器中的ui控件在屏幕上的绝对坐标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)