android 所有焦点问题--Focus

一. 主动获取焦点

setFocusable(true);    //  是设置能否获得焦点而已。.
requestFocus();          //是让控件得到焦点
requestFocusInWindow()  //的作用应该是获取窗口的焦点

二.子类是否获取焦点 

  开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。

这时候就可以使用descendantFocusability来解决啦,API描述如下:
该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

属性的值有三种:
        beforeDescendants:viewgroup会优先其子类控件而获取到焦点
        afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
        blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
通常我们用到的是第三种,即在Item布局的根布局加上Android:descendantFocusability=”blocksDescendants”的属性就好了

三.监听activity获取/失去焦点(onWindowFocusChanged)
  作用: 1.可以监听activity获取/失去焦点 【hasFocus: true 获取焦点, false失去焦点】
           2.判断activity加载完成(当所有生命周期完成后调用该方法)

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    // TODO Auto-generated method stub
    super.onWindowFocusChanged(hasFocus);
} 

  

时间: 2024-10-26 11:21:04

android 所有焦点问题--Focus的相关文章

Android中全局搜索(QuickSearchBox)详解

http://blog.csdn.net/mayingcai1987/article/details/6268732 1. 标题: 应用程序如何全面支持搜索 2. 引言: 如果想让某个应用程序支持全局搜索,必须对这个应用程序进行一系列配置,并实现可被外界访问的内容提供者向搜索应用程序 (QuickSearchBox)提供搜索結果,根据配置信息,应用程序可被搜索框架识别为搜索源,搜索应用程序(QuickSearchBox)也可以 通过解析配置信息组拼成URI请求应用的ContentProvider

Android中EditTex焦点设置和弹不弹出输入法的问题

今天编程碰到了一个问题:有一款平板,打开一个有EditText的Activity会默认弹出输入法.为了解决这个问题就深入研究了下android中焦点Focus和弹出输入法的问题.在网上看了些例子都不够全面,在这里全面总结下. 一:EditText为什么会默认弹出输入法? 同样的代码,碰到有EditText控件的界面时有的机子会弹出输入法,有的机子不会弹出.不好意思,这问题我也一头雾水,谁知道可以告诉我,否则我就把这个问题留下来,以后研究android源码时再搞个清楚.但是...我有解决方案. 二

Android Material Design动画

最近在看一些关于Material Design的东西,还记得在博客<你所不知道的Activity转场动画--ActivityOptions>中,我们介绍了一种优雅的activity过度动画.如果大家看了最后给出的参考链接,会发现还有很多内容是值得我们学习的,所以这篇博客,我们来学习一下这一页上剩下的东西. 一.触摸反馈 大家都知道,在Material Design中,触摸反馈的效果非常绚丽,是一种涟漪的效果,令我们高兴的是,这种效果也是可以自定义的. <LinearLayout xmln

Android如何判断当前手机是否正在播放音乐,并获取到正在播放的音乐的信息

我想实现如下的场景,判断当前Android手机上是否正在播放音乐,如果是,通过某个特定的手势, 或者点击某个按键,将当前我正在听的音乐共享出去. 第一步,就是判断当前是否有音乐正在播放. 最开始我想得有点复杂,以为要深入framework或更下层去做手脚才行,找了一下资料,发现AudioManager对外暴露了接口. [java] /** Checks whether any music is active. */ isMusicActive() 通过这个接口就可以判断当前系统是否有音乐在播放了

Android service进程保护

应用进程保活基本就是围绕两个方面来展开: 1 尽量保证进程不被杀死. 2 进程被杀死后复活.细分如下: 1)Service重启 2)进程守护 3)Receiver触发 4) AlarmManager or JobScheduler循环触发 5)与系统Service捆绑-–可以不考虑,了解即可 下面将围绕这几点展开讨论. 一,基本概念 1.什么才叫应用进程保活 应用进程保活可以理解为应用位于后台永远不能被杀死.这里的可以简略地分为两种情况,第一种是当系统资源紧俏的时候或者基于某种系统自身的后台运行

android EditText 软键盘 一些总结

看一个manifest中Activity的配置,如果这个页面有EditText,并且我们想要进入这个页面的时候默认弹出输入法,可以这样设置这个属相:android:windowSoftInputMode=stateVisible,这样就会默认弹起输入法,当然还有别的办法. <activity android:name=".ui.login" android:configChanges="orientation|keyboardHidden|locale" an

edittext SearchView 失去焦点问题

edittext 默认自动获取焦点的 而且会出现小键盘很烦人 <LinearLayout android:id="@+id/focus" android:layout_width="fill_parent" android:layout_height="60dp" android:background="#EAEAEA" android:focusable="true" android:focusab

Go support for Android

David Crawshaw June 2014 Abstract We propose to introduce Go support for the Android platform. The focus will be on supporting games written in Go. The APIs will be those defined in the Android NDK. Background Android is an operating system designed

spotify engineering culture part 1

原文 ,因为原视频说的太快太长, 又没有字幕,于是借助youtube,把原文听&打出来了. 中文版日后有时间再翻译. one of the big succeess factors here at Spority is our agile engineering culture. Culture trends to be invisible we don't notice it because it's there all the time, kind of like the air we br