Android EditText获取焦点并d出软键盘

Android EditText获取焦点并d出软键盘,第1张

1、首先,在xml文件中通过让edittext获取焦点

<EditText

        android:layout_width="match_parent"

        android:layout_height="match_parent"

        android:padding="17dp"

        android:textColor="#333333"

        android:textColorHint="#999999"

        android:hint="请输入课件描述"

        android:gravity="top|left"

        android:background="@null"

        >

        <requestFocus/>

    </EditText>

2、在清单文件中给activity添加android:windowSoftInputMode=”stateVisible”属性,这样一进入这个页面的时候光标就自动显示,软键盘也显示出来

<activity

            android:name="wonderfulmomentAddCourseWareDescriptionActivity"

            android:windowSoftInputMode="stateVisible"></activity>

Android TV app开发与一般Android开发最大的区别在于焦点控制 , 用户在使用Android TV设备主要是通过遥控器 *** 作app。机顶盒应用不同于手机应用,因为多数是没有触摸屏的,只能靠遥控器,所以要保持一个焦点的位置,让用户知道当前 *** 作作用的对象 然而一些app,依据系统对focus的判断,会出现的状况: 上下导航时,不是想要的结果 边缘移动时,会出现焦点丢失的状况 有时想直接定位到某个位置上

android提供了一些焦点相关的属性,在现有的框架层下通过设置View的属性来获得焦点

android:focusable:设置一个控件能否获得焦点

android:background:设置在作为背景的drawable

android:nextFocusDown:定义下一个获得焦点的控件当按下键时

android:nextFocusUp:定义下一个获得焦点的控件当按上键时

android:nextFocusLeft:定义下一个获得焦点的控件当按左键时

android:nextFocusRight:定义下一个获得焦点的控件当按右键时

<requestFocus/>:强制设置一个焦点到指定的view或它的一个子类,前提是android:focusable为true能够获得焦点

private void setListViewPos(int pos) {

if (androidosBuildVERSIONSDK_INT >= 8) {

mListViewsmoothScrollToPosition(pos);

} else {

mListViewsetSelection(pos);

}

}

点选某个item时记录下他在listView中的位置,然后用上面这个方法就可以直接让listView滚动到这一行。

1)onKeyDown方法,该方法是接口KeyEventCallback中的抽象方法,所有的View全部实现了该接口并重写了该方法,该方法用来捕捉手机键盘被按下的事件。

2)参数keyCode,该参数指的是被按下的键的键盘码,手机键盘中每个按钮都会有其对应的键盘码,在应用程序都是通过键盘码才知道用户按下的是哪个键。

3)当用户按下按键时,系统会自动将事件封装成KeyEvent对象供应用程序使用。按键事件KeyEvent按键事件有多种常量类型,比如 KEYCODE_BACK

4)返回值,该方法的返回值为一个boolean类型的变量,当返回true时,表示已经完整地处理了这个事件,并不希望其他的回调方法再次进行处理,而当返回false时,表示并没有完全处理完该事件,更希望其他回调方法继续对其进行处理,例如Activity中的回调方法。 参考文本

private voidsetFocus() {//获取焦点

et_cardnosetFocusable(true);

et_cardnosetFocusableInTouchMode(true);

et_cardnorequestFocus();

}

//实现的基本原理就是,当按下BACK键时,会被onKeyDown捕获,判断是BACK键,则执行voidsetFocus方法。

@Override

public booleanonKeyDown(intkeyCode, KeyEvent event) {

LogUtilsd("TAG","=========================== 调用onKeyDown ");

setFocus();

return superonKeyDown(keyCode, event);

}

之前遇到过这种情况,参考如下内容: xml布局文件中RecyclerView和Item的高度都设定的是wrap_content,那说好的自适应于item高度呢?查看Android文档,没发现有关RecyclerView高度相关说明,看来只能自己动手丰衣足食了。

Android TV app开发与一般Android开发最大的区别在于焦点控制 , 用户在使用Android TV设备主要是通过遥控器 *** 作app。机顶盒应用不同于手机应用,因为多数是没有触摸屏的,只能靠遥控器,所以要保持一个焦点的位置,让用户知道当前 *** 作作用的对象。 然而一些app,依据系统对focus的判断,会出现的状况: 上下导航时,不是想要的结果。 边缘移动时,会出现焦点丢失的状况。 有时想直接定位到某个位置上。

android提供了一些焦点相关的属性,在现有的框架层下通过设置View的属性来获得焦点

android:focusable:设置一个控件能否获得焦点

android:background:设置在作为背景的drawable

android:nextFocusDown:定义下一个获得焦点的控件当按下键时

android:nextFocusUp:定义下一个获得焦点的控件当按上键时

android:nextFocusLeft:定义下一个获得焦点的控件当按左键时

android:nextFocusRight:定义下一个获得焦点的控件当按右键时

<requestFocus/>:强制设置一个焦点到指定的view或它的一个子类,前提是android:focusable为true能够获得焦点

Android O 允许以画中画 (PIP) 模式启动 *** 作组件。PIP 是一种特殊的多窗口模式,最常用于视频播放。目前,PIP 模式可用于 Android TV,而 Android O 则让该功能可进一步用于其他 Android 设备。

当某个 Activity 处于 PIP 模式时,它会处于暂停状态,但仍应继续显示内容。因此,您应确保您的应用在 onPause() 处理程序中进行处理时不会暂停播放。相反,您应在 onStop() 中暂停播放视频,并在 onStart() 中继续播放。如需了解详细信息,请参阅 多窗口生命周期 。

要指定您的 Activity 可以使用 PIP 模式,请在清单中将 android:supportsPictureInPicture 设置为 true。(从 Android O 开始,如果您打算在 Android TV 或其他 Android 设备上支持 PIP 模式,则无需将 android:resizeableActivity 设置为 true;只有在您的 Activity 支持其他多窗口模式时,才需要设置 android:resizeableActivity。)

多窗口模式不会更改 Activity 生命周期 。

在多窗口模式中,在指定时间只有最近与用户交互过的 Activity 为活动状态。 该 Activity 将被视为顶级 Activity。 所有其他 Activity 虽然可见,但均处于暂停状态。 但是,这些已暂停但可见的 Activity 在系统中享有比不可见 Activity 更高的优先级。 如果用户与其中一个暂停的 Activity 交互,该 Activity 将恢复,而之前的顶级 Activity 将暂停。

Android O 引入一种新的对象 PictureInPictureParams ,您可以将该对象传递给 PIP 函数来指定某个 Activity 在其处于 PIP 模式时的行为。此对象还指定了各种属性,例如 *** 作组件的首选纵横比。

现在, 在添加画中画 中介绍的现有 PIP 函数可用于所有 Android 设备,而不仅限于 Android TV。此外,Android O 还提供以下函数来支持 PIP 模式:

您的应用可以决定何时触发 PIP 模式。以下是一些关于何时进入 PIP 模式的示例:

PIP 窗口为 240x135 dp,在屏幕角落的最顶层显示,由系统在四个角落中选择一个角落。 用户可以调出 PIP 菜单,将 PIP 窗口切换为全屏,或通过按下遥控器上的主页按钮关闭 PIP 窗口。 如果主屏幕开始播放另一个视频,PIP 窗口将自动关闭。 用户还可以通过“最近使用记录”关闭 PIP 窗口。

PIP 利用 Android N 中提供的多窗口 API 显示固定视频层叠窗口。 如需将 PIP 添加到应用,您需要注册支持 PIP 的 Activity,然后根据需要将 Activity 切换到 PIP 模式,并确保隐藏所有 UI 元素,且 Activity 处于 PIP 模式时视频继续播放。

默认情况下,系统并不自动为应用提供 PIP 支持。如果想要应用支持 PIP,请将 android:supportsPictureInPicture 和 android:resizeableActivity 设置为 true,在清单中注册视频 Activity。 此外,应明确指定 Activity 处理布局配置变更,这样,在 PIP 模式过渡期间发生布局变更时,Activity 不会重新启动。

在注册 Activity 时,请记住,在 PIP 模式中,您的 Activity 在电视屏幕上的小层叠窗口中显示。 视频播放 Activity 结合以尽量小的 UI 可以实现最佳用户体验。 在切换到 PIP 模式后,UI 元素较小的 Activity 带来的用户体验可能较差,因为用户在 PIP 窗口中看不到 UI 元素的详细信息。

在需要将 Activity 切换到 PIP 模式时,请调用 ActivityenterPictureInPictureMode()。在下面的示例中,当用户选择媒体控制栏上的专用 PIP 按钮时,系统切换到 PIP 模式:

在媒体控制栏上添加 PIP 按钮可以方便用户在控制视频播放的同时切换到 PIP 模式。

Android N 中包含一个新的 PlaybackControlsRowPictureInPictureAction 类,它可以定义控制栏 PIP *** 作并使用 PIP 图标。

在 Activity 进入 PIP 模式时,Activity 应仅显示视频播放。 在 Activity 进入 PIP 模式前删除 UI 元素,当 Activity 再次全屏显示时恢复这些元素。重写 ActivityonPictureInPictureModeChanged() 或 FragmentonPictureInPictureModeChanged(),并根据需要启用或禁用 UI 元素,例如:

在 Activity 切换到 PIP 模式时,系统会认为 Activity 处于暂停状态,并调用 Activity 的 onPause() 方法。 如果 Activity 因为 PIP 模式暂停,视频播放不应暂停,而是应继续播放。 在 Activity 的 onPause() 方法中检查 PIP,并对播放做相应处理,例如:

当 Activity 退出 PIP 模式并回到全屏模式时,系统会恢复 Activity 并调用 onResume() 方法。

在您的应用中,用户可以在浏览主屏幕中的内容时选择一个新的视频,视频播放 Activity 处于 PIP 模式。 在现有播放 Activity 中全屏模式下播放新视频,而不是启用可能使用户感到困惑的新 Activity。

若要确保视频播放请求使用的是单个 Activity 并根据需要进入或退出 PIP 模式,在您的清单中将 Activity 的 android:launchMode 设置为 singleTask:

在您的 Activity 中,替换 ActivityonNewIntent(),处理新视频,如果需要,停止任何现有视频播放。

PIP 用于全屏播放视频的 Activity。在 Activity 切换到 PIP 模式时,应避免显示除视频外的其他内容。根据处理画中画模式中的 UI 中所述,在 Activity 进入 PIP 模式时进行跟踪,并隐藏 UI 元素。

由于 PIP 窗口悬浮在屏幕的角落,因此应避免在主窗口被 PIP 窗口遮挡的任何区域显示重要信息。

当 Activity 处于 PIP 模式时,其默认不获取输入焦点。要在 PIP 模式中接收输入事件,请使用 MediaSessionsetMediaButtonReceiver()。

以上就是关于Android EditText获取焦点并d出软键盘全部的内容,包括:Android EditText获取焦点并d出软键盘、android tv 开发需要什么基础、android listview获取焦点的item一直在屏幕的最前,怎么处理。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/10135246.html

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

发表评论

登录后才能评论

评论列表(0条)

保存