安卓 tabhost下其他控件如何获取焦点

安卓 tabhost下其他控件如何获取焦点,第1张

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等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9522105.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存