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

更多相关文章

  1. Android使用ListView构造复杂界面,响应点击事件,通过Intent跳转act
  2. Android开发 第2课 控件TextView、Plain Text、ImageView、 Butt
  3. 解决在 Android(安卓)Recovery ADB Shell 下不能挂载SD卡的问题
  4. Android(安卓)Rect 的使用以及与RectF的区别
  5. android环境搭配
  6. 点击按钮 按钮缩放动画:
  7. 使用dataBinding,真正不用findViewById
  8. 第四章(1)Libgdx项目安装、运行和调试
  9. Android(安卓)ListView常用用法

随机推荐

  1. Android连接网络打印机,jSocket连接网络打
  2. Android(安卓)点击查看大图(长按保存图片)
  3. android 查看软件
  4. Android(安卓)保存图片到SQLite,读出SQLi
  5. Android(安卓)6.0 访问图库时,报错 requir
  6. 查询余额以及流量
  7. android ListView中Checkbox实现单选,全选
  8. android 各种 Adapter
  9. Android(安卓)ListView显示数据的常见处
  10. Android系统版本与代号