安卓按键设置焦点

Posted Abro.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓按键设置焦点相关的知识,希望对你有一定的参考价值。

目录

前言

1.在XML中设置焦点属性

2.在代码中设置焦点


前言

在开发过程中会遇到为手机或电视设置按键可操作或者触屏可操作的需求。


1.在XML中设置焦点属性

<!-- View中控件先后获取焦点的属性 -->

android:descendantFocusability="beforeDescendants"
1. beforeDescendants:viewgroup会优先其子类控件而获取到焦点
2. afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才能获取焦点
3. blockDescendants:viewGroup直接覆盖子类控件从而获取焦点

<!-- 设置可获取焦点 -->
android:focusable="true"

<!-- 设置可触摸 -->
android:focusableInTouchMode="true"

<!-- 设置可点击上下View可切换焦点 -->
android:touchscreenBlocksFocus="false"

<!-- 设置点击不穿透 -->
android:clickable="true"

<!-- 指定下一个获取焦点的控件 -->
android:nextFocusDown="@id/favorite"


2.在代码中设置焦点

//指定控件获取焦点
mScreenshotLayout.requestFocus();
mScreenshotLayout.setNextFocusUpId(mScreenshotPreview.getId());
mScreenshotLayout.setNextFocusDownId(mScreenshotPreview.getId());
mScreenshotLayout.setNextFocusLeftId(mScreenshotPreview.getId());
mScreenshotLayout.setNextFocusRightId(mScreenshotPreview.getId());

//设置可获取焦点的属性(设置默认焦点)
mDrawerLayout.setFocusable(false); 
mDrawerListView.setClickable(true);
mDrawerListView.setFocusable(true);
mDrawerListView.requestFocus();
mDrawerListView.setFocusableInTouchMode(true);

//设置listview的item可以顺畅获取焦点
mTrackList.setItemsCanFocus(true);

//设置下一个控件可获取焦点
mNextButton.setNextFocusUpId(mAlbumIcon.getId());

//设置延迟获取焦点
mSetViewFocusHandler.sendEmptyMessageDelayed(1,200);//进行延迟聚焦

有需要的朋友可以参考学习一下,有不足的地方欢迎补充 !!!

以上是关于安卓按键设置焦点的主要内容,如果未能解决你的问题,请参考以下文章

安卓Tv开发移动智能电视之焦点控制(按键事件)

安卓onKeyDown事件 重新获取焦点

按键精灵的qui节目问题,关于输入框的焦点的问题,懂的进来看看

安卓讲课笔记4.1 安卓按键事件

Android TV 开发焦点处理 ( 父容器与子组件焦点获取关系处理 | 不同电视设备上的兼容问题 | 触摸获取焦点 | 按键获取焦点 )

在delphi中如何设置热键来转移焦点,如点击按键A就把焦点移到了edit1编辑框里