
TabHost 只是一个框架
要让里面的控件获焦点,你要对应的Activityt里去设置的
例如:
intent = new Intent(this, Test1Activityclass);
spec = tabHostnewTabSpec(TAB_1);
specsetContent(intent);
tabHostaddTab(spec);
intent = new Intent(this, Test2Activityclass);
spec = tabHostnewTabSpec(TAB_1);
specsetContent(intent);
tabHostaddTab(spec);
你要到对应的Activity里,结对象的控件设置焦点
如果你的自制控件里使用了任何可以获得焦点的系统控件,比如textbox,那么你让它获得焦点不就得了
这里的分配句柄主要是指,如果你的控件纯粹靠自绘,那么它就是个而已,根本无法获得焦点
Android如何获取动态添加控件的id:RelativeLayout
mainLayout
=
(RelativeLayout)findViewById(RidrelaGameZhaiGuoZi);imgApple2
=
new
ImageView(this);imgApple2setImageResource(Rdrawableapp);imgApple2setId(110);imgApple2setOnClickListener(this);RelativeLayoutLayoutParams
lp1
=
new
RelativeLayoutLayoutParams(LayoutParamsWRAP_CONTENT,
LayoutParamsWRAP_CONTENT);lp1leftMargin=30;lp1topMargin
=
100;mainLayoutaddView(imgApple2,lp1);View类里面有一个findFocus的成员函数,作用相当于找到以当前View为根的view层次结构中,获得当前输入焦点的view
。Android下如何取当前获得焦点的控件的ID
其中一个窗体中含有commandbutton,它先于窗体接收到keydown消息,因此窗体没有做出反应
正面解决的办法研究不出,不过可以试着将commandbutton换成label。
如果两个窗体都没有commandbutton,请将窗体中的keypreview属性设为true
使用focus()方法来获得焦点
一般窗口组件都有此方法,如
window
文本
密码
按钮
单选按钮
复选按钮
选择菜单
选择菜单的子表项
文本区域
相应的聚焦的事件是 onFocus
代码
<Script>
function checkPassword(testObject) {
if (testObjectvaluelength < 4) {
alert("密码长度不得小于四");
testObjectfocus();
testObjectselect();
}
}
</Script>
KeyUP 是 k-e-y-u-p; KeyDown是k-e-y-d-o-w-n; 前者5位英文字母,后者是7位,按位数判断就可以了。
不使用PreTranslateMessage的话眼睛盯着窗体鼠标狂点就有焦点了,实在不行拿个凸透镜瞄的准点就行了
控件的句柄和获得焦点的控件的句柄比较
如何得到那个控件获得了焦点?API函数GetFocus()返回得到焦点的控件的局部
如何得到已知控件ID的某个控件的句柄
先用CWND类的GetDlgItem方法得到该控件的CWnd指针
然后调用CWnd类的GetSafeHwnd方法得到该控件的句柄
if(GetDlgItem(控件ID)->GetSafeHwnd()==::GetFocus())
甚至可以直接比较指针不用比较句柄用CWnd类的GetFocus方法返回得到焦点的控件的CWnd指针(不需要GetSafeHwnd了)
举例
mfc对话框工程添加wm_close、wm_timer消息响应函数
oninitdialog中添加定时器SetTimer(1,1000,NULL);
onclose中KillTimer(1);删掉定时器
添加两个edit控件
ontimer函数中
voidCMfcdlgDlg::OnTimer(UINTnIDEvent)
{
//TODO:Addyourmessagehandlercodehereand/orcalldefault
//if(GetDlgItem(IDC_EDIT2)->GetSafeHwnd()==::GetFocus())
if(GetDlgItem(IDC_EDIT2)==GetFocus())
{
MessageBox("edit2getfocus");
}
CDialog::OnTimer(nIDEvent);
}
程序每隔1秒检测一下焦点在不在edit2上如果在就messagebox输出信息
以上就是关于安卓 tabhost下其他控件如何获取焦点全部的内容,包括:安卓 tabhost下其他控件如何获取焦点、怎样使自制控件可以获取焦点、Android下如何取当前获得焦点的控件的ID等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)