问一下android 翻页效果设置焦点效果的问题

开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,自己的Adapter去继承BaseAdapter,在adapter中按照需求进行编写,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点。原因多半是由于在你自己定义的Item中存在诸如ImageButton,Button,CheckBox等子控件(也可以说是Button或者Checkable的子类控件),此时这些子控件会将焦点获取到,所以常常当点击item时变化的是子控件,item本身的点击没有响应。
&&& 这时候就可以使用descendantFocusability来解决啦,API描述如下:
android:descendantFocusability
Defines the relationship between the ViewGroup and its descendants when looking for a View to take focus.
Must be one of the following constant values.
该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。
属性的值有三种:
&&&&&&& beforeDescendants:viewgroup会优先其子类控件而获取到焦点
&&&&&&& afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
&&&&&&& blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点
通常我们用到的是第三种,即在Item布局的根布局加上android:descendantFocusability=”blocksDescendants”的属性就好了,至此listview点击的灵异事件告一段落。心得:遇到不会不懂的地方除了网上查询资料之外,也可以多多去尝试每种属性的作用,多阅读官方文档(我始终觉得还是读原文的比翻译的理解的会更好)。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1777次
排名:千里之外
原创:17篇
转载:14篇10942人阅读
Android UI(812)
Android开发(1715)
android中,要使控件获得焦点,需要先setFocus,再requestFocus。
以Button为例:
&&&&&&&&&&&&&&&&btn.setFocusable(true);
&&&&&&&&&&&&&&& btn.setFocusableInTouchMode(true);
&&&&&&&&&&&&&&& btn.requestFocus();
&&&&&&&&&&&&&&& btn.requestFocusFromTouch();
//获得失去焦点的监听器
btn.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if (hasFocus) {
btn_box.setBackgroundResource(R.drawable.book_green);
btn_box.setBackgroundResource(R.drawable.book);
1. 背景色:&&&&&& listView设置背景色android:background=&@drawable/bg&,拖动或者点击list空白位置的时候发现ListItem都变成黑色。&因为默认的ListItem背景是透明的,而ListView的背景是固定不变的,所以在滚动条滚动的过程中如果实时地去将当前每个Item的显示内容跟背景进行混合运算,所以android系统为了优化这个过程用,就使用了一个叫做android:cacheColorHint的属性,在黑色主题下默认的颜色值是#191919,所以就出现了刚才的画面,有一半是黑色的。
&如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色;如果你是用图片做背景的话,那也只要将android:cacheColorHint指定为透明(#)就可以了,当然为了美化是要牺牲一些效率的。&
2. android:fadingEdge=&none&& &去掉上边和下边黑色的阴影
3. android:divider=&@drawable/list_driver&&&& &其中 @drawable/list_driver 是一个图片资源lsitview的每一项之间需要设置一个图片做为间隔&
设置Item之间无间隙
android:divider=&#& 或者在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事件屏蔽。
目前网络上普遍的解决方式
在Item的xml模板中设置 根布局 属性
&:descendantFocusability=&&blocksDescendants&
&&RelativeLayout&
android:descendantFocusability=&&blocksDescendants&
在按钮控件&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));
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:6979285次
积分:65547
积分:65547
排名:第21名
原创:678篇
转载:1630篇
评论:2057条
赠人玫瑰,手有余香。分享技术,传递快乐。工作之余提供有偿技术支持和其他形式的合作。 QQ:
如果您认为本博客不错,读后觉得有收获,不妨打赏赞助我一下,让我有动力继续写出高质量的博客。
文章:29篇
阅读:62823
文章:74篇
阅读:231775后使用快捷导航没有帐号?
android如何让一个布局内的所以控件获取不到焦点
wangyubin 51618 10
&&本帖最后由 wangyubin 于
11:25 编辑& &
如题:如何让一个布局内的所以控件获取不到焦点
比如外面是个linearLayout,,给它设置属性后,,里面包含的button什么的获取不到焦点,,,,我需要这种效果
& &我来回答& &
android ,&&如何&&
post_newreply
//$(\'note_\').focus();
function succeedhandle_vfastpost(url, message, param) {
$(\'vmessage\').value = \'\';
succeedhandle_fastpost(url, message, param);
showCreditPrompt();
var vf_tips = \'#在这里快速回复#\';
$(\'vmessage\').value = vf_
$(\'vmessage\').style.color = \'#CDCDCD\';
$(\'vmessage\').onclick = function() {
if($(\'vmessage\').value==vf_tips) {
$(\'vmessage\').value=\'\';
$(\'vmessage\').style.color=\&#000\&;
$(\'vmessage\').onblur = function() {
if(!$(\'vmessage\').value) {
$(\'vmessage\').value=vf_
$(\'vmessage\').style.color=\&#CDCDCD\&;
$(\'vreplysubmit\').onclick = function() {
if($(\'vmessage\').value == vf_tips) {
等级:ADD.幼儿园
所有的空间设置不可点击可以么?android:clickable=&false&,不可触摸,不可滚动,都设置上
等级:ADD.幼儿园
focusable =false
等级:ADD.小学
android:focusable=&false&
等级:ADD.幼儿园
IBrave 发表于
11:07& && &
比如外面是个linearLayout,,给它设置属性后,,里面包含的button什么的获取不到焦点,,,,我需要这种效果
等级:ADD.幼儿园
hanxueying 发表于
所有的空间设置不可点击可以么?android:clickable=&false&,不可触摸,不可滚动,都设置上 ...& &
我就是不想一个一个去设置,,所以问下有没有方法
等级:ADD.小学
wangyubin 发表于
比如外面是个linearLayout,,给它设置属性后,,里面包含的button什么的获取不到焦点,,,,我需要这种效果 ...& &
android:clickable=&false&
等级:ADD.高中
在layout设置
android:focusable=&&&&
android:focusableInTouchMode=&&
等级:ADD.小学
wangyubin 发表于
我就是不想一个一个去设置,,所以问下有没有方法& &
等级:ADD.小学
wangyubin 发表于
我就是不想一个一个去设置,,所以问下有没有方法& &
int count = linearLayout.getChildCount();
& & & & & & & & for(int i = 0; i & ++i) {
& & & & & & & & & & & & View b = line.getChildAt(i);
& & & & & & & & & & & & if (line.getChildAt(i)&&instanceof Button) {
& & & & & & & & & & & & & & & & b.setFocusable(false);
& & & & & & & & & & & & }
& & & & & & & & }
1、2、3、4、5、6、7、8、9、10、

我要回帖

更多关于 android 翻页效果 的文章

 

随机推荐