touchscreen属性与焦点(actionabr/toolbar )

2023-12-07 19:38

本文主要是介绍touchscreen属性与焦点(actionabr/toolbar ),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

现在越来越多的功能机是采用android系统来做的,因为是按键机,所以有很多地方需要调整。

比如本文说的部分机器可能希望,actionbar/toolbar无法获取焦点,觉得按键机有menu建,没必要让actionbar/toolbar上面的menu按钮再获取焦点了。


正文:

1.google定义:touchscreen

frameworks/base/core/res/res/values/attrs.xml

<!-- Set to true if this ViewGroup blocks focus in the presence of a touchscreen. --><attr name="touchscreenBlocksFocus" format="boolean" />
这里看到,在touchscreen情况下,如果设置了这个属性为true,blocksfoucs也就是无法获取焦点。

通过按键是无法将焦点切换到viewgroup上去的。

2.来看看google设计toolbar

/frameworks/base/core/res/res/values/styles.xml
 <style name="Widget.Toolbar"><item name="titleTextAppearance">@style/TextAppearance.Widget.Toolbar.Title</item><item name="touchscreenBlocksFocus">true</item></style>
toolbar设置了true,自然也就blcokfocus了。

这就是一些按着系统的按键机的actionbar/toolbar不能通过案件将焦点切上的原因了。

PS:强制修改

方案1:将这些true改成false;比较麻烦,v7包中的也要该,其他的res下面的文件可能也有,也需要修改;

方案2:在系统配置文件目录下面(device/目录/项目.mk),增加文件

android.hardware.touchscreen.xml
<permissions><!-- Disable touch screen features<feature name="android.hardware.touchscreen" /><feature name="android.hardware.faketouch" />-->
</permissions>
然后再在编译文件中加入这个文件,在系统编译的时候能够得到编译从而其作用
PRODUCT_COPY_FILES := \$(BOARDDIR)/android.hardware.touchscreen.xml:system/etc/permissions/android.hardware.touchscreen.xml \$(PRODUCT_COPY_FILES)
方案2就是将touchscreen给禁了,所以设置了也没用了。

强制修改手机方法:

1.root手机,

2.删除/system/etc/permissions/目录下的文件:android.hardware.touchscreen.xml

(ubuntu系统:adb shell rm -rf /system/etc/permissions/android.hardware.touchscreen.xml)

3.重启手机,可以看到toolbar和actionbar可以获取焦点了。

以上这些xml的属性,如何在代码中控制从而其作用的:具体没有验证,应该是这里控制的。

frameworks/base/core/java/android/view/ViewGroup.java
1122    /**
1123     * Set whether this ViewGroup should ignore focus requests for itself and its children.
1124     * If this option is enabled and the ViewGroup or a descendant currently has focus, focus
1125     * will proceed forward.
1126     *
1127     * @param touchscreenBlocksFocus true to enable blocking focus in the presence of a touchscreen
1128     */
1129    public void setTouchscreenBlocksFocus(boolean touchscreenBlocksFocus) {
1130        if (touchscreenBlocksFocus) {
1131            mGroupFlags |= FLAG_TOUCHSCREEN_BLOCKS_FOCUS;
1132            if (hasFocus()) {
1133                final View focusedChild = getDeepestFocusedChild();
1134                if (!focusedChild.isFocusableInTouchMode()) {
1135                    final View newFocus = focusSearch(FOCUS_FORWARD);
1136                    if (newFocus != null) {
1137                        newFocus.requestFocus();
1138                    }
1139                }
1140            }
1141        } else {
1142            mGroupFlags &= ~FLAG_TOUCHSCREEN_BLOCKS_FOCUS;
1143        }
1144    }





这篇关于touchscreen属性与焦点(actionabr/toolbar )的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/467110

相关文章

JavaScript中的isTrusted属性及其应用场景详解

《JavaScript中的isTrusted属性及其应用场景详解》在现代Web开发中,JavaScript是构建交互式应用的核心语言,随着前端技术的不断发展,开发者需要处理越来越多的复杂场景,例如事件... 目录引言一、问题背景二、isTrusted 属性的来源与作用1. isTrusted 的定义2. 为

C#实现WinForm控件焦点的获取与失去

《C#实现WinForm控件焦点的获取与失去》在一个数据输入表单中,当用户从一个文本框切换到另一个文本框时,需要准确地判断焦点的转移,以便进行数据验证、提示信息显示等操作,本文将探讨Winform控件... 目录前言获取焦点改变TabIndex属性值调用Focus方法失去焦点总结最后前言在一个数据输入表单

Java如何通过反射机制获取数据类对象的属性及方法

《Java如何通过反射机制获取数据类对象的属性及方法》文章介绍了如何使用Java反射机制获取类对象的所有属性及其对应的get、set方法,以及如何通过反射机制实现类对象的实例化,感兴趣的朋友跟随小编一... 目录一、通过反射机制获取类对象的所有属性以及相应的get、set方法1.遍历类对象的所有属性2.获取

vue如何监听对象或者数组某个属性的变化详解

《vue如何监听对象或者数组某个属性的变化详解》这篇文章主要给大家介绍了关于vue如何监听对象或者数组某个属性的变化,在Vue.js中可以通过watch监听属性变化并动态修改其他属性的值,watch通... 目录前言用watch监听深度监听使用计算属性watch和计算属性的区别在vue 3中使用watchE

滚雪球学Java(87):Java事务处理:JDBC的ACID属性与实战技巧!真有两下子!

咦咦咦,各位小可爱,我是你们的好伙伴——bug菌,今天又来给大家普及Java SE啦,别躲起来啊,听我讲干货还不快点赞,赞多了我就有动力讲得更嗨啦!所以呀,养成先点赞后阅读的好习惯,别被干货淹没了哦~ 🏆本文收录于「滚雪球学Java」专栏,专业攻坚指数级提升,助你一臂之力,带你早日登顶🚀,欢迎大家关注&&收藏!持续更新中,up!up!up!! 环境说明:Windows 10

HTML5自定义属性对象Dataset

原文转自HTML5自定义属性对象Dataset简介 一、html5 自定义属性介绍 之前翻译的“你必须知道的28个HTML5特征、窍门和技术”一文中对于HTML5中自定义合法属性data-已经做过些介绍,就是在HTML5中我们可以使用data-前缀设置我们需要的自定义属性,来进行一些数据的存放,例如我们要在一个文字按钮上存放相对应的id: <a href="javascript:" d

Python中的属性装饰器:解锁更优雅的编程之道

引言 在Python的世界里,装饰器是一个强大的工具,它允许我们以一种非侵入性的方式修改函数或方法的行为。而当我们谈论“属性装饰器”时,则是在探讨如何使用装饰器来增强类中属性的功能。这不仅让我们的代码更加简洁、易读,同时也提供了强大的功能扩展能力。本文将带你深入了解属性装饰器的核心概念,并通过一系列实例展示其在不同场景下的应用,从基础到进阶,再到实际项目的实战经验分享,帮助你解锁Python编程

react笔记 8-17 属性绑定 class绑定 引入图片 循环遍历

1、绑定属性 constructor(){super()this.state={name:"张三",title:'我是一个title'}}render() {return (<div><div>aaaaaaa{this.state.name}<div title={this.state.title}>我是一个title</div></div></div>)} 绑定属性直接使用花括号{}   注

ConstraintLayout布局里的一个属性app:layout_constraintDimensionRatio

ConstraintLayout 这是一个约束布局,可以尽可能的减少布局的嵌套。有一个属性特别好用,可以用来动态限制宽或者高app:layout_constraintDimensionRatio 关于app:layout_constraintDimensionRatio参数 app:layout_constraintDimensionRatio=“h,1:1” 表示高度height是动态变化

Android ToolBar+DrawerLayout的实现

实现思路: 1.关联相应的依赖包 compile ‘com.android.support:appcompat-v7:25.3.1’ 2.主布局 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"