当前位置: 代码迷 >> Android >> Android初学者日记 26 ListView中放置button
  详细解决方案

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

热度:23   发布时间:2016-05-01 19:14:27.0
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

  相关解决方案