`
shuai1234
  • 浏览: 973553 次
  • 性别: Icon_minigender_1
  • 来自: 山西
社区版块
存档分类
最新评论

Android ListView xml配置

阅读更多
1 <ListView android:id="@+id/locallist_lv" android:layout_width="fill_parent"
2         android:layout_height="fill_parent"  android:layout_above="@id/btm_menu" 
3         android:layout_below="@id/top_menu" 
4           android:divider="@drawable/song_item_line"  item之间的分割线
5         android:cacheColorHint="#00000000"系统切换item时的缓存色
6         android:scrollbars="none"不显示滚动条
7               android:listSelector="#00000000"/>选中时背景色

ListView遇到的两个问题 List集合的排序

1. 将ListView的背景色设置为白色,ListIView控件上下滑动时,背景就会变为黑色,但是图片会正常显示,这怎么解决呢?网上搜了一下,

如果大家在非黑色背景下使用ListView控件时,Android默认可能在滚动ListView时这个列表控件的背景突然变成黑色。这样可能导致程序的黑色的背景和主程序的主题既不协调。解决的方法Google在设计Android时也考虑了,在Layout的ListView中加入 android:cacheColorHint="#00000000" 的属性即可,或者是调用ListView的setCacheColorHint(0);方法。

2. 在ListView的item项里使用CheckBox或者Button时,OnItemClickListener无响应的问题

在Android软件设计与实现中我们通常都会使用到ListView这个控件,系统有一些预置的Adapter可以使用,例如SimpleAdapter和ArrayAdapter,但是总是会有一些情况我们需要通过自定义ListView来实现一些效果,那么在这个时候,我们通常会碰到自定义ListView无法选中整个ListViewItem的情况,也就是无法响应ListView的onItemClickListener中的onItemClick()方法,之后自己查看了一下ViewGroup的源码,发现了以下的一段常量声明:

/**

* This view will get focus before any of its descendants.

*/

public static final int FOCUS_BEFORE_DESCENDANTS = 0×20000;

/**

* This view will get focus only if none of its descendants want it.

*/

public static final int FOCUS_AFTER_DESCENDANTS = 0×40000;

/**

* This view will block any of its descendants from getting focus, even

* if they are focusable.

*/

public static final int FOCUS_BLOCK_DESCENDANTS = 0×60000;

/**     * This view will get focus before any of its descendants.     */

public static final int FOCUS_BEFORE_DESCENDANTS = 0×20000;
/**     * This view will get focus only if none of its descendants want it.     */

public static final int FOCUS_AFTER_DESCENDANTS = 0×40000;
/**     * This view will block any of its descendants from getting focus, even     * if they are focusable.     */

public static final int FOCUS_BLOCK_DESCENDANTS = 0×60000;

我们看到了一行代码定义的变量的意思是“当前View将屏蔽他所有子控件的Focus状态,即便这些子控件是可以Focus的”,其实这段话的意思就是这个变量代表着当前的View将不顾其子控件是否可以Focus自身接管了所有的Focus,通常默认能获得focus的控件有Button,Checkable继承来的所有控件,这就意味着如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus,也就是说我们可以通过将ListView中Item中包含的所有控件的focusable属性设置为false,这样的话ListView的Item自动获得了Focus的权限,也就可以被选中了,也就会响应onItemClickListener中的onItemClick()方法,然而将ListView的Item Layout的子控件focusable属性设置为false有点繁琐,我们可以通过对Item Layout的根控件设置其android:descendantFocusability=”blocksDescendants”即可,这样Item Layout就屏蔽了所有子控件获取Focus的权限,不需要针对Item Layout中的每一个控件重新设置focusable属性了,如此就可以顺利的响应onItemClickListener中的onItenClick()方法了。例如我的ListViw的每个item项是RelativeLayout,那么我就可以设置RelativeLayout的android:descendantFocusability=”blocksDescendants”即可。注意:这个属性不能设置给ListView,设置了也不起作用。

第二种方法是将ListView子控件中的CheckBox或者ImageButton,Button的android:focusable="false"属性即可。

第三种方法是不适用CheckBox,或者Button,使用TextView,等等完全可以代替Button。
分享到:
评论

相关推荐

    Android中ListView的每个Item以资源文件XML形式显示数据进行布局

    综上所述,通过定义XML布局文件并创建自定义Adapter,我们可以实现Android中的ListView,每个Item以XML形式显示数据。理解并熟练运用这些知识点对于开发高效且用户体验良好的Android应用至关重要。

    Android listview 逐行显示效果

    本文将详细介绍如何配置环境,创建ListView,以及实现动画效果。 首先,你需要确保你的开发环境已经搭建完成,包括安装了Android SDK,对应版本(1.6,即API Level 4)的系统镜像,以及集成开发环境Eclipse。在...

    android listview仿iphone特效

    - `AndroidManifest.xml`:应用的核心配置文件,定义了应用的组件、权限和其他设置。 - `src`:存放源代码的目录。 - `res`:资源文件夹,包含了应用的布局、图标、字符串等资源。 - `assets`:可以放置任意文件的...

    Android listView 分页功能

    在Android开发中,ListView是一种常用的组件,用于展示大量的列表数据。分页功能是优化用户体验、减少内存消耗的重要手段,尤其当数据源庞大时。本文将详细介绍如何在Android中实现ListView的分页功能,并结合给定的...

    android Listview demo

    "ListApp"是一个基础的Android ListView教程项目,涵盖了ListView的基本使用、Adapter的配置、数据绑定、事件监听以及简单的页面跳转。对于初学者来说,通过这个示例可以深入理解ListView的工作原理和使用方法,为...

    Android ListView 实现分批加载

    2. ListView配置:在XML布局文件中,设置ListView,并为其创建一个适配器(Adapter)。适配器将负责将数据源中的数据转换为ListView可显示的视图。 3. 懒加载适配器:创建自定义适配器,扩展BaseAdapter或...

    Android ListView卡片效果

    在`getView()`方法中,我们将实例化并配置上述`card_view.xml`布局,填充数据并返回视图对象。 ```java public class CardListAdapter extends BaseAdapter { private Context context; private List&lt;CardModel&gt; ...

    android listview的使用方法

    本篇文章将深入探讨如何在Android中使用ListView,包括基本配置、适配器(Adapter)的使用以及一些优化技巧。 首先,我们需要在布局文件中添加ListView元素。在XML布局中,你可以这样定义一个ListView: ```xml ...

    android listview 例子

    2. **自定义布局**:每个ListView项可以通过XML定义一个单独的布局文件,这样可以包含任何想要的控件。在`getView()`方法中,通过LayoutInflater加载这个布局,并将数据绑定到相应的控件上。例如,你可以创建一个...

    Android解析XML(PULL)展示到ListView

    在Android开发中,将XML数据解析并展示到ListView是一种常见的数据加载方式。在这个场景中,我们看到使用了PULL解析器来处理XML数据,并通过ListView显示。以下是详细的知识点讲解: 1. **PULL解析器**: PULL解析...

    android--ListView实现带标题栏效果(附源码)

    6. **AndroidManifest.xml配置** 确保在`AndroidManifest.xml`中正确声明了主Activity和其他必要的权限,例如网络访问权限(如果应用需要从网络获取数据)。 7. **项目构建配置** `.classpath`、`.project`、`...

    Android下使用ListView的简单Demo

    在Android中,通常我们会创建一个XML布局文件来设计每个子项的界面。 2. **Adapter的概念** Adapter是ListView与数据源之间的桥梁,它负责将数据转化为ListView可显示的视图。在Android中,我们通常使用...

    android listview拉动刷新

    在Android开发中,ListView是常用的数据展示组件,用于显示大量数据列表。然而,为了提供更好的用户体验,Android开发者经常需要实现ListView的“拉动刷新”功能,让用户可以轻松地更新列表内容。"android listview ...

    android listview 示例源代码

    1. **布局文件配置**:在XML布局文件中添加ListView元素,设定其ID以便在代码中引用。例如: ```xml &lt;ListView android:id="@+id/my_list_view" android:layout_width="match_parent" android:layout_height=...

    Android 实现ListView的A-Z字母排序和过滤搜索功能

    在Android Studio环境中,记得在build.gradle文件中配置好依赖,如appcompat库,以便使用TextView、ListView等组件。编写布局XML文件,定义ListView和搜索框的结构。在Activity中实例化它们,并设置适配器和监听器。...

    android 横向滚动listview

    在XML布局文件中,我们将使用(这里以示例包名为例)替换掉原本的&lt;ListView&gt;标签,设置相关的属性,如id、width、height以及android:scrollbars="horizontal",使滚动条显示在水平方向。 4. **编程实现** 在...

    Android ListView下拉刷新 Demo.zip

    开发者通过自定义ListView类,结合触摸事件监听、内部类处理刷新逻辑,以及适当配置混淆规则,成功地构建了一个具有下拉刷新功能的ListView。这个Demo对于学习和理解Android UI交互设计,特别是ListView的高级用法,...

    android ListView下拉刷新

    2. **布局配置**:在XML布局文件中,需要添加SwipeRefreshLayout作为ListView的父容器,并为ListView设置相应的id。SwipeRefreshLayout会包裹ListView,提供下拉刷新的交互。 ```xml &lt;androidx.swiperefreshlayout....

    Android 高德API地图展示和Listview

    7. **build.gradle文件**:这是Android项目构建配置文件,包含了项目的依赖库信息、版本控制等。在本案例中,可能会看到高德地图SDK的依赖声明,如`implementation 'com.amap.api:maps:4.5.1'`,这表示项目引用了...

    android arraylist 实现 listview

    在Android开发中,ListView是一种常用的组件,用于展示可滚动的多行数据列表。ArrayList是Java集合框架中的一个重要类,常用于存储动态大小的有序对象数组。在这个场景中,我们将探讨如何利用ArrayList来实现...

Global site tag (gtag.js) - Google Analytics