android TV端各类焦点问题
16lz
2021-12-04
1.
android:focusable与android:focusableInTouchMode
前者针对在键盘下操作的情况,如果设置为true,则键盘上下左右选中,焦点会随之移动。
而后者,显然是针对触屏情况下的,也就是我们点击屏幕的上的某个控件时,不要立即执行相应的点击逻辑,而是先显示焦点(即控件被选中),再点击才执行逻辑。
android:focusable=“true”不会改变android:focusableInTouchMode,因此只在键盘状态下显示焦点,在TouchMode状态下,依旧无法显示焦点。
android:focusable=“false”,一定会使android:focusableInTouchMode=“false”。
相对的
android:focusableInTouchMode=“false”,不会影响android:focusable。
android:focusableInTouchMode=”true”,一定会是android:focusable=“true”
2.
view.addOnAttachStateChangeListener() 可监听控件状态,在listview等控件中可以用于监控item状态而初始化设置焦点
@Overridepublic void onViewAttachedToWindow(View v) { v.setFocusableInTouchMode(true); v.requestFocus(); v.removeOnAttachStateChangeListener(this);}@Overridepublic void onViewDetachedFromWindow(View v) { v.removeOnAttachStateChangeListener(this);
}
3.android:duplicateParentState = "true" 可使view的聚焦选中等状态 更随父控件状态改变。
更多相关文章
- Android札记【2】——系统的认识心中的Android[首届 Google 暑期
- Android中的13种Drawable小结
- android输入法弹出调整布局与沉浸式状态栏冲突+fitSystemWindows
- Android中的Selector
- Android(安卓)Activity 简介
- Android控件开发——ListView
- Android(安卓)8.0 状态栏信号显示、信号定制
- Android开发中的drawable文件:shape、layer-list和selector标签
- Android(安卓)UI开发专题(四) View自绘控件