专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > Android

Android初学者日记 26 ListView中放置button

发布时间:2010-05-30 09:27:21 文章来源:www.iduyao.cn 采编人员:星星草
Android菜鸟日记 26 ListView中放置button

 

Android菜鸟日记

26 ListView中放置button

 

ListView放置button是一个很麻烦的事情 网上说的 一般都是如何实现button listView同时被点击,可视做HDEasyCall 时候更多的需要listviewbutton不能同时点击。

 

首先如果想要ListView 里面的button被点击,且listView也能被点击。

如果直接添加的话 只能点击到button而不能点击到ListView,因为焦点被button获取了。

一、那么需要:让button不要成为焦点:

 

唯一的办法是在listView的填充布局文件[lis_Item.xml]中对根节点

设置

android:descendantFocusability="blocksDescendants"

然后 再让button无法获得焦点 如果button获得焦点则 无法传到listView

<button android:focusable="false">

设置完上面2  此时的button listView 都能被点击,且监听都能触发。

 

 

二、坑爹的事情也来了,

如果你点击button也就罢了,但是如果你点击到listView 系统会认为你点击到了listview的顶级view 也就是button的父节点。此时 会认为 listView的单元view[也就是那个填充的根节点]内的所有子节点都被选中。既点击listView 时填充的button也会被点击。这是不允许的。

 

思前想后解决办法有2个:

1.让重写ListViewListView被点击时不要把点击事件传到填充view的下一层,只让顶层的节点接到。

2.舍弃listView监听,把填充view做成一个背景为整个view大小的button[我称它为背景button],上面再放置其他button[或者其他,此处一般使用相对布局],那么只需要把之前写给listView的监听写给那个背景button就可以了。

 

代码如下:

可以参照HDEasyCall项目看

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <Button android:id="@+id/bt_list" android:layout_width="fill_parent"
       android:layout_height="fill_parent" android:background="@drawable/list_line_bg"
       android:onClick="funClick" />
    <TextView android:layout_marginLeft="28dp"
       android:layout_marginTop="10dp" android:id="@+id/tx1"
       android:layout_width="wrap_content" android:layout_height="wrap_content"
       android:textSize="18dp" android:textColor="#2b82e8" />
    <TextView android:layout_marginLeft="28dp"
       android:layout_marginRight="9dp" android:id="@+id/tx2"
       android:layout_below="@id/tx1" android:layout_width="wrap_content"
       android:layout_height="wrap_content" android:textSize="14dp"
       android:textColor="#6c6c6c" />
    <Button android:layout_alignParentRight="true" android:id="@+id/bt3"
       android:layout_width="wrap_content" android:textColor="#ffffff"
       android:layout_height="wrap_content" android:layout_marginLeft="30dp"
       android:layout_marginTop="76dp" android:layout_marginRight="15dp"
       android:paddingLeft="12dp" android:onClick="funClick"
       android:background="@drawable/selector_button_phonecall" />
</RelativeLayout>
 

  

2011-10-31

poolo

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: