安卓按键设置焦点

目录

前言

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);//进行延迟聚焦

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

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android中,可以通过设置按钮的样式来获取焦点。首先,在res文件夹下的values文件夹中创建一个新的xml文件,命名为button_style.xml。在该文件中,可以定义按钮的各种样式,包括按下效果、聚焦效果等。例如: ```xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:drawable="@drawable/button_pressed" /> <item android:state_focused="true" android:drawable="@drawable/button_focused" /> <item android:drawable="@drawable/button_normal" /> </selector> ``` 上面的代码中,定义了三个item,分别对应按钮的按下状态、聚焦状态和默认状态。根据需要,可以在drawable文件夹中创建相应的图片资源,比如button_pressed.png、button_focused.png和button_normal.png,并将其分别设置给相应的item。 接下来,在布局文件中设置按钮的样式。找到需要设置焦点样式的按钮,将其background属性指定为刚才创建的button_style.xml文件即可,例如: ```xml <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/button_style" android:text="Button" /> ``` 这样,当按钮被按下或者获得焦点时,会自动显示相应的样式。你可以根据实际需要修改样式文件和图片资源,来达到想要的焦点样式效果。 总结一下,为了设置按钮的焦点样式,需要创建一个selector文件,定义各种焦点状态对应的样式,并在布局文件中将按钮的background属性指定为该selector文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值