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”

@Overridepublic voidonViewAttachedToWindow(View v) { v.setFocusableInTouchMode(true); v.requestFocus(); v.removeOnAttachStateChangeListener(this); } @Overridepublic voidonViewDetachedFromWindow(View v) { v.removeOnAttachStateChangeListener(this);

}

3.android:duplicateParentState = "true" 可使view的聚焦选中等状态 更随父控件状态改变。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐