ScrollView 嵌套 ListView
自定义可适应 ScrollView 的 ListView,重写其 onMeasure 方法。
此方法默认显示的首项是 ListView,需要手动把 ScrollView 滚动至最顶端:scrollView.smoothScrollTo(0, 0);
import android.content.Context; import android.util.AttributeSet; import android.widget.ListView; public class ListViewForScrollView extends ListView { public ListViewForScrollView(Context context) { super(context); } public ListViewForScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public ListViewForScrollView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override /** * 重写该方法,达到使 ListView 适应 ScrollView 的效果 */ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2, MeasureSpec.AT_MOST); super.onMeasure(widthMeasureSpec, expandSpec); } }
ListView 屏蔽 item 点击
- 在 ListView 中设置:
若 ListView 的 id 是使用系统默认的 id,则可以在实现此 ListView 的 Adapter 里重写
isEnabled()
方法:<ListView android:id="@android:id/list" android:layout_width="match_parent" android:layout_height="match_parent" android:transcriptMode="alwaysScroll" android:layout_weight="1" />
@Override public boolean isEnabled(int position) { return false; }
若 ListView 的 id 是自定义的
listview.setEnabled(false);
参考: android 之 listview 的 item 不可点击
以上方法会导致 ListVIew 无法滑动,只适用于在 ScrollView 中的 ListView。
- 在 Adapter 中设置
//表明 Adapter 中的所有 item 是否可以点击 @Override public boolean areAllItemsEnabled() { return false; } //表明下标为 position 的 item 不可选中,不可点击 @Override public boolean isEnabled(int position) { return false; }
参考: android 屏蔽 listview 的item事件
- 屏蔽 HeaderView、FooterView 点击
mListView.addHeaderView(headView ,null,false);
ListView 不显示分割线
设置和取消每个 item 分隔线
listView.setDivider(null); android:divider="@null"; android:divider="@drawable/listview_horizon_line"
隐藏头部分隔线
Listview 分割线会在头部、数据 item 底部打印,如果要取消头部分割线必须
先设置其方法addHeaderView(headView, null, true); addFooterView(footView, null, true); **注意:第三个参数必须为 true,否则无效** //显示头部出现分割线 listview.setHeaderDividersEnabled(true); //禁止底部出现分割线 listview.setFooterDividersEnabled(false);
去除 item 点击背景色
ListView 默认背景和系统窗口一样是透明的,如果给listview加上背景图片,或者背景颜色时,滚动时listview会黑掉,因为滚动时,列表里面的view重绘用的依旧是系统默认的透明色,颜色值为#FF191919。
ListView xml中设置android:cacheColorHint="#00000000" android:listSelector="#00000000"
ListView Tips
最新推荐文章于 2021-03-17 09:06:44 发布