给listview item 增加长方形框的背景
1.在res/drawable/下新建:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<stroke android:width="2dp" android:color="#bcb3b3"/>
<padding android:bottom="2dp"
android:right="2dp"
android:left="2dp"
android:top="2dp"/>
<corners android:radius="5dp"/>
<solid android:color="#fffdfd"/>
</shape>
2.引用,在listview item 里的布局文件加上
android:background=”@drawable/rectangle”
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/rectangle"
android:orientation="horizontal"
android:layout_margin="6dp"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_name"
android:textSize="20sp"
android:layout_width="0dp"
android:singleLine="true"
android:layout_weight="1"
android:text="name"
android:layout_height="wrap_content" />
<TextView
android:id="@+id/tv_size"
android:textSize="16sp"
android:gravity="center"
android:layout_marginLeft="5dp"
android:text="kb"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
Android_listview设置每条信息的间距
Android_listview设置每条信息的间距
设置listView的item间距,可以在xml布局文件中的listView下设置xml属性:
android:divider=”#00000000”
android:dividerHeight=”18dp”
解释:分隔线透明,高度为18dp。
ListView实现Item中关于点击事件的例子
ListView.addHeaderView()用法及其注意事项
动态刷新ListView中的某个item
ListView封装实现下拉刷新和上拉加载(方式2)
ListView应用之上拉加载更多
ListView封装实现下拉刷新和上拉加载(方式1)
ListView长按列表项弹出菜单 给菜单项添加事件 获取上下文
ListView的简单实现
onItemClick事件无效
原因:listview的item里面包含button或者imageview时,给listview设置onitemlongclick事件无效
解决:在listview的item布局文件里面的根元素里面添加属性android:descendantFocusability=”blocksDescendants”
内容被底部弹出UI遮挡
在使用listView显示聊天窗口时,弹出输入法,listview不会自动向上滚动,会遮盖内容,在manifest中的Activity加入:
android:windowSoftInputMode=”adjustResize”
如果还是不行,还可以继续给ListView设置如下三个属性:
android:fastScrollEnabled=”true”
android:scrollbarStyle=”insideInset”
android:transcriptMode=”normal”
包含checkbox时的点击事件
1.item根布局添加属性android:descendantFocusability=”blocksDescendants”
2.checkbox标签如下
<CheckBox
android:id="@+id/cb_checkbox"
style="@style/ChatCheckboxTheme"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_marginRight="25dp"
android:layout_marginTop="0dp"
android:gravity="center"
/>
Checkbox无需额外添加属性
Checkbox的点击事件可通过在适配器中采用回调来实现
setSelection无效的解决方案
原因一:界面初始化完成之后listview失去了焦点。
原因二:因为listview的item高度不一致,或者添加了headerview,在setadapter之后调用setSelection无法准确定位。
万能解决方法:
final ListView listView = new ListView(getActivity());
listView.post(new Runnable() {
@Override
public void run() {
listView.requestFocusFromTouch();//获取焦点
listView.setSelection(listView.getHeaderViewsCount()+10);//10是你需要定位的位置
}
});
如果还是不行则:
final ListView listView = new ListView(getActivity());
listView.postDelayed(new Runnable() {
@Override
public void run() {
listView.requestFocusFromTouch();
listView.setSelection(listView.getHeaderViewsCount()+10);
}
},500);
ListView分割线显示和隐藏
1、设置和取消每个item分隔线
解决方案:
ListView.setDivider(null);
android:Divider="@null";
android:divider="@drawable/listview_horizon_line"
Android:divider= “@color/color”
2、隐藏头部分隔线
listview分割线会在头部、数据item、及根部的底部打印,如果要取消头部分割线必须
先设置期方法
addHeaderView(headView, null, true);
addFooterView(footView, null, true);
注意:第三个参数必须为true,否则无效
//显示头部出现分割线
listview.setHeaderDividersEnabled(true);
//禁止底部出现分割线
listview.setFooterDividersEnabled(false);