这个问题没有试过,不过我想说一下我的思路,你看是否可行:
你可以在窗体中放置一个隐藏的控件,然后写一个委托事件,每当listview焦点改变后,就将该焦点所在的行的ID作为那个隐藏控件的值,每次刷新的时候检查该值,让焦点停留到LIstView中的该行就可以了!
我也遇到一个类似的问题!
我想要这种效果
listview
item
里有textview
和imageButton,
imageButton
默认都是隐藏,当我按上下键的时候,item的背景要改变,而且选到哪个
item
,item里的imagebutton就要显示出来,imagebutton能够单独响应事件
这个跟是不是android系统关系不太大,一般的事件驱动的UI界面系统都差不多,画面上的各种控件是一个树状结构,比如一个画面上面有一个layout,里面放了一个listview,listview里面有两个item,第一个item上面有一个button和一个text,那么结构可能像下面这样:
window
|
layout
|
listview
|--------------------|
listviewItem1 listviewItem2
|-----------|
button text
当一个点击发生的时候,UI线程会收到系统报告的这次点击事件,然后他需要一个逻辑来判断到底是哪个控件来响应这次点击,一般的逻辑是从上面这棵树的叶子节点,也就是最下层开始,根据各个控件的范围坐标和点击坐标判断,比如点击位置在button的范围内,会先尝试调用button的点击事件处理程序,然后根据结果判断是不是需要再向上(listviewItem,listview等)抛这个事件,如果不向上抛,listviewItem等就接收不到这个事件了。至于是不是向上抛的判断逻辑,就是根据你给各个控件设置的属性来的了,比如跟不跟父控件抢焦点之类的。
曾经做过这个,但是如果要我敲出代码给你,这个需要比较多的精力。
提供个思路给你:
你可以获取到当前Activity下面的所有View,并且你能判断出Edittext有哪些,还有就是当前Edittext下面的那个Edittext是哪个,这样的话,你按回车 直接在TextWatcher中的onTextChanged中做好处理,当用户按了回车,你就直接让焦点跑到下一个EditText上。
先让你的EditText获取到焦点 requestFocus(), requestFocusFromTouch()然后调下面的APIInputMethodManager :public boolean showSoftInput (View view, int flags)Added in API level 3Synonym for showSoftInput(View, int, ResultReceiver) without a result receiver: explicitly request that the current input method's soft input area be shown to the user, if neededParametersview The currently focused view, which would like to receive soft keyboard inputflags Provides additional operating flags Currently may be 0 or have the SHOW_IMPLICIT bit setpublic vo
以上就是关于android ListView刷新焦点问题全部的内容,包括:android ListView刷新焦点问题、如何为listview 中的item设置获取焦点事件、android 点击和焦点的联系等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)