android中设置控件获得焦点

【系统架构设计师-2024下半年真题】案例分析-参考答案及部分详解(完整回忆版) 根据h中描述,为了保证高可靠性,有ping/echo,心跳机制两种策略,从资源利用率问为啥心跳更好。王工觉得使用ping/echo好,但李工觉得从系统资源利用率来说,使用心跳机制好 1、针对质量属性可以使用ping/echo和心跳模式实现,分别简述ping/echo和心跳的实现原理。 2、张工认为心跳策略比较适合,简述为什么? 阅读详情
ndroid中,要使控件获得焦点,需要先setFocus,再requestFocus。

以Button为例:
                btn.setFocusable(true);
                btn.setFocusableInTouchMode(true);
                btn.requestFocus();
                btn.requestFocusFromTouch();

  1. //获得失去焦点的监听器  
  2.   
  3. btn.setOnFocusChangeListener(new OnFocusChangeListener() {  
  4.     
  5.   @Override  
  6.   public void onFocusChange(View v, boolean hasFocus) {  
  7.    // TODO Auto-generated method stub  
  8.    if (hasFocus) {  
  9.     btn_box.setBackgroundResource(R.drawable.book_green);  
  10.    }else {  
  11.     btn_box.setBackgroundResource(R.drawable.book);  
  12.    }     
  13.   }  
  14.  });  

1. 背景色:       listView设置背景色android:background="@drawable/bg",拖动或者点击list空白位置的时候发现ListItem都变成黑色。 因为默认的ListItem背景是透明的,而ListView的背景是固定不变的,所以在滚动条滚动的过程中如果实时地去将当前每个Item的显示内容跟背景进行混合运算,所以android系统为了优化这个过程用,就使用了一个叫做android:cacheColorHint的属性,在黑色主题下默认的颜色值是#191919,所以就出现了刚才的画面,有一半是黑色的。

 如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色;如果你是用图片做背景的话,那也只要将android:cacheColorHint指定为透明(#00000000)就可以了,当然为了美化是要牺牲一些效率的。 

2. android:fadingEdge="none"   去掉上边和下边黑色的阴影

3. android:divider="@drawable/list_driver"     其中 @drawable/list_driver 是一个图片资源lsitview的每一项之间需要设置一个图片做为间隔 

设置Item之间无间隙

android:divider="#00000000" 或者在javaCode中如下定义:listView.setDividerHeight(0);

 4. android:listSelector="@color/pink" listView item 选中时的颜色。默认为橙黄底色。

 5. android:divider="@drawable/list_driver" 设置分割线的图片资源,如果则只要设置为

     android:divider="@drawable/@null" 不想显示分割线

 

 6. android:scrollbars="none"   setVerticalScrollBarEnabled(true);  隐藏listView的滚动条

 7. android:fadeScrollbars="true"  设置为true就可以实现滚动条的自动隐藏和显示

 8. android:transcriptMode="alwaysScroll"  用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部。

        android:fastScrollEnabled="false"
        android:fastScrollEnabled = "true"  加快滑动速度

    android:drawSelectorOnTop="false" 
    android:scrollingCache="false"  ??????????????

 

android:drawSelectorOnTop="true" 点击某一条记录,颜色会显示在最上面,记录上的文字被遮住,所以点击文字不放,文字就看不到

android:drawSelectorOnTop="false" 点击某条记录不放,颜色会在记录的后面,成为背景色,但是记录内容的文字是可见的

When set to true, the selector will be drawn over the selected item. Otherwise the selector is drawn behind the selected item. The default value is false.


 9.在ListView中添加属性:
android:scrollbarTrackVertical="@drawable/scrollbar_vertical_track" android:scrollbarThumbVertical="@drawable/scrollbar_vertical_thumb"
scrollbar_vertical_track,crollbar_vertical_thumb自定义的xml文件,放在Drawable中,track是指长条,thumb是指短条,然后再xml中定义短条和长条的样式


  在项目的开发过程中,需要Listview的Item中包含按钮的效果。在实际开发过,Item中放置按钮后,ListView 单行选择背景颜色变化的效果没有了。

 

问题原因

    ListView 和 其它能触发点击事件的widget无法一起正常工作的原因是加入其它widget后,ListView的itemclick事件将无法触发,被其它widget的click事件屏蔽。

 

目前网络上普遍的解决方式

设置1  在Item的xml模板中设置 根布局 属性

 android:descendantFocusability= "blocksDescendants"

 

如下:

< RelativeLayout>

android:descendantFocusability= "blocksDescendants"

 

设置2 在按钮控件<ImageButton>中设置属性

 

android:focusable = "false"

补充:这种设置后,点击按钮,整条Item都响应点击效果,显示的效果非我们需要的

 

我们的需要的效果

1 ListView的Item本身可以选择

2 Item中的按钮可以随意点击,不会干扰Item

 

实现的过程

 在ListView中用图片控件,或者文本控件,来代替图片按钮和普通按钮,并在Adapter中设置点击事件就可以

 如例:

 

//根据数据项,设置点击文本框的文字,并设置点击事件        TextView txt_Remember=(TextView)convertView.findViewById(R.id.txt_Remember);                txt_Remember.setOnClickListener(new  TextView.OnClickListener()        {            public void onClick(View v){                LibListViewAdapter.this.remove(LibListViewAdapter.this.getItem(1));                            }        });
某AI推荐系统项目管理复盘:架构师总结的6大方法论与调优策略 我是张三,某大厂资深AI架构师,主导过5个千万级用户的推荐系统项目(覆盖电商、内容、视频、音乐、外卖等场景)。我的公众号“AI架构师笔记”会分享更多AI项目管理和技术实战经验,欢迎关注。最后的话:推荐系统不是“一锤子买卖”,而是“持续优化的过程”。希望这篇文章能帮你少踩坑,多做对——毕竟,把复杂的事做成,才是架构师的核心能力。 阅读详情

相关推荐

无人机飞控技术最详细解读

已剪辑自: https://zhuanlan.zhihu.com/p/64519280[导读]被称作是“飞行器的大脑”的飞控到底是什么?以前,搞无人机的十个人有八个是航空、气动、机械出身,更多考虑的是如何让飞机稳定飞起来、飞得更快、飞得更高。如今,随着芯片、人工智能、大数据技术的发展,无人机开始了智能化、终端化、集群化的趋势,大批自动化、机械电子、信息工程、微电子的专业人材投入到了无人机研发大潮中,几年的时间让无人机从远离人们视野的军事应用飞入了寻常百姓家、让门外汉可以短暂的学习也能稳定可靠的飞行娱乐。不可

qq_41854911的博客 1万+

android ListView 焦点问题

1. 背景色:       listView设置背景色android:background="@drawable/bg",拖动或者点击list空白位置的时候发现ListItem都变成黑色。 因为默认的ListItem背景是透明的,而ListView的背景是固定不变的,所以在滚动条滚动的过程中如果实时地去将当前每个Item的显示内容跟背景进行混合运算,所以android系统为了优化这个过程用,就使用

jacky choise 1635

从硬件拆解到图像生成:一次搞懂MRI设备(主磁体、梯度线圈、射频系统)是如何协同工作的

本文深入解析MRI设备的三大核心系统——主磁体、梯度线圈和射频系统如何协同工作,实现从量子现象到诊断图像的转化。通过详细的技术参数和临床案例,揭示磁共振成像(MRI)在医疗图像处理中的精密工程原理和最新技术突破,帮助读者全面理解这一现代医学影像技术的运作机制。

weixin_33734785的博客 546

Android 之 ListView 的焦点问题

我们可以写个简答的listView,上面有一个Button,CheckBox,EditText,但是当我们点击发现, ListView的item点击不了,触发不了onItemClick的方法,也触发不了onItemLongClick方法, 这个就是ListView的一个焦点问题了!就是ListView的焦点被其他控件抢了,下面我们来看看如何解决这个问题?如题,只需为抢占了ListView Item焦点的控件设置。本节我们就来学习下解决这个问题的几个方法!如题,在Item布局的根节点添加上述属性,

leyang0910的博客 643

EBS开发_创建AP付款

--以下代码于20181002在Tony环境测试通过 /* BEGIN   --mo_global.init('SQLAP');   apps.fnd_global.apps_initialize(user_id =&gt; 1110, resp_id =&gt; 50597, resp_appl_id =&gt; 20003);   --mo_global.set_policy_context(...

蜗牛先生快跑的博客 4766

用运放和乘法器DIY忆阻模拟器:从理论到Multisim仿真实战

本文详细介绍了如何利用运放和乘法器DIY忆阻模拟器,从理论基础到Multisim仿真实战。通过解析忆阻器的数学模型,设计关键电路模块,并完成仿真验证,帮助电子爱好者低成本实现忆阻器功能。文章还提供了实际调试中的常见问题解决方案和进阶应用建议,适合神经形态计算和非易失性存储领域的研究者参考。

weixin_28718345的博客 416

(转)Android ListView和Item焦点问题

原帖:https://www.jianshu.com/p/6fe14f9b7726 在Android 开发中,当我们使用ListView时,比如item是一个RadioButton或者CheckBox等控件时,此时会出现焦点问题,比如我们选择了一个RadioButton,当我们滑动ListView后,我们返回我们刚才选中的RadioButton时,会发现我们选择的状态没有被选中。这是怎么回事?下...

sharpeha的博客 687

【视频讲解】Python量子计算聚类Q-means:量子k-means算法分析电路数据实现可视化...

全文链接:https://tecdat.cn/?p=37821分析师:Yifan Zhang量子计算在近期已然成为一个频繁出现的热门概念。尽管它在大众认知以及互联网社区中备受瞩目,热度极高,然而就其实际能力而言,当前仍然存在诸多局限(点击文末“阅读原文”获取完整代码数据)。量子计算作为一个全新的领域,带来了相较于传统经典计算模式的重大范式转变。在量子计算的体系中,传统的 0 或 1 的经典比特被一...

拓端研究室TRL 1455

ListView焦点问题

如果listView中的item含有button、togglebutton等有状态变化的控件,则onItemClick失效。 原因是焦点被这些子控件抢夺了。

Tyrael1009的专栏 702

药物吸收仿真软件:Caco-2_(9).Caco-2模型在药物开发中的案例分析

通过以上五个案例,我们可以看到Caco-2模型在药物开发中的重要作用。它不仅能够帮助我们预测药物的肠道吸收情况,还能够用于优化药物配方、评估代谢稳定性、研究药物相互作用以及转运蛋白的影响。这些体外实验和仿真分析的结果为药物的进一步临床研究提供了重要的参考依据,有助于缩短药物开发周期,提高研发效率。

kkchenjj的博客 863

详细解读经典跨模态对齐技术Q-Former代码

介绍BLIP2的博客层出不穷,介绍Q-Former的博客也不少,但是详细解读Q-Former代码的博客很少。这篇博客希望以代码为基础,讲明白Q-Former的原理和核心思想,并详细解读一些值得注意的细节。希望读者们能从这一经典技术中朝花夕拾,得到启发。

沉迷单车的追风少年 2458

listView 控件焦点方面的问题

1.种情况关于android:descendantFocusability,有三个属性值,beforeDescendants viewgroup会优先其子类控件而获取到焦点afterDescendants viewgroup只有当其子类控件不需要获取焦点时才获取焦点blocksDescendants viewgroup会覆盖子类控件而直接获得焦点 <ListView and

684

京东豆自动领取脚本配置教程

腾讯云/阿里云服务器(Docker环境):全自动跑脚本领京豆(无需本地代理,使用加速源)

AIOT魔法师 855

android 两个控件同时获得焦点,android中设置控件获得焦点

android中,要使控件获得焦点,需要先setFocus,再requestFocus。以Button为例:btn.setFocusable(true); btn.setFocusableInTouchMode(true); btn.requestFocus(android中,要使控件获得焦点,需要先setFocus,再requestFocus。以Button为例:btn.setFocusable...

weixin_42718924的博客 1046

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

android设置控件焦点,android中设置控件获得焦点

android中,要使控件获得焦点,需要先setFocus,再requestFocus。以Button为例:btn.setFocusable(true);btn.setFocusableInTouchMode(true);btn.requestFocus();btn.requestFocusFromTouch();或者在xml文件里设置:android:id="@+id/auxilTabBarId...

weixin_32407987的博客 1546

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android设置控件获得焦点

android中,要使控件获得焦点,需要先设置可以获得焦点setFocus,再请求获得焦点requestFocus。   以Button为例:                 btn.setFocusable(true);                 btn.setFocusableInTouchMode(true);                 btn.requestFocus

璐璐的专栏 1480

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

android中设置控件获得焦点 (转)

android中,要使控件获得焦点,需要先setFocus,再requestFocus。 以Button为例: btn.setFocusable(true); btn.setFocusableInTouchMode(true); btn.requestFocus(); ...

weixin_30709635的博客 67

android聚焦时如何给控件加边框,edittext设置获得焦点时的边框颜色

第一步:为了更好的比较,准备两个一模一样的EditText(当Activity启动时,焦点会在第一个EditText上,如果你不希望这样只需要写一个高度和宽带为0的EditText即可避免,这里就不这么做了),代码如下:android:layout_width="fill_parent"android:layout_height="36dip"android:background="@drawab...

weixin_28864249的博客 787

android 自定义控件 焦点,android中设置控件获得焦点

android中,要使控件获得焦点,需要先setFocus,再requestFocus。以Button为例:btn.setFocusable(true);btn.setFocusableInTouchMode(true);btn.requestFocus();btn.requestFocusFromTouch();//获得失去焦点的监听器btn.setOnFocusChangeListener(n...

weixin_31639069的博客 481

android中使用java代码设置控件获得焦点

eg:AutoCompleteTextView 控件 private AutoCompleteTextView autoCompleteTextView; autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.txtxcm_autoCompleteTextView1);// 找到相应的控件 /...

292
上一篇: Android onTouchEvent, onClick及onLongClick的调用机制
下一篇: dispatchkeyevent的调用机制
xiaoxiandroid
博客等级 码龄12年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值