android:listSelector="@android:color/transparent"
android:scrollbars="none"
(1) 在布局文件中ListView元素中通过属性设置
android:divider="#fffff" 分割线颜色
android:dividerHeight="10px" 分割线高度
(2) 使用XML文件设置
<!-- res/drawable/liner.xml ->
<?xmlversionxmlversion="1.0"encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<gradient
android:startColor="#000000"
android:centerColor="#CCCCCC"
android:endColor="#FFFFFF"
android:height="1px"
android:angle="0"/>
</shape>
</item>
</layer-list>
android:divider="@null" //最常用方法
android:divider="#00000000"
lv.setDividerHeight(0) //高度设为0
listView.setSelection(N);//N是需要显示的第N个Item
//使用以下代码实现平滑移动
listview.smoothScrollBy(moveInstance, duration);
listview.smoothScrollByOffset(offset);//滚动offset个item
listview.smoothScrollToPosition(index);//跳转到index位置
for(int i = 0; listView.getChildCount(); i++) { View view = listView.getChildAt(i); }
ListView和其他继承自AdapterView的类可以使用setEmptyView(View view)方法设置空状态下的显示。当绘制AdapterView的适配器为空或者isEmpty
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent">
<ListView android:id="@+id/empty_listview_lv" android:layout_width="match_parent" android:layout_height="match_parent" />
<ImageView android:id="@+id/empty_imageview_iv" android:layout_width="match_parent" android:layout_height="match_parent" android:src="@drawable/bg" android:visibility="gone"/>
</FrameLayout>
在ListView下显示一个ImageView,注意我在测试的时候发现ImageView一定设置Android:visibility=”gone”否则不管ListView的适配器是否为空都会显示。
public class EmptyListViewActivity extends Activity {
private ListView empty_listview_lv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.empty_listview_layout);
empty_listview_lv = (ListView) findViewById(R.id.empty_listview_lv);
String[] mListStr = {"1","2","3","3","4"};
empty_listview_lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1, mListStr));
empty_listview_lv.setEmptyView(findViewById(R.id.empty_imageview_iv));
}
}
这样当我们的数据为空的时候可以设置
empty_listview_lv.setAdapter(null);
这样就会显示ImageView(注:不需要把ImageView的visibility设置为可见);
/** * OnScrollListener 监听 */
lv.setOnScrollListener(new OnScrollListener() {
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
// 当不滚动时
case OnScrollListener.SCROLL_STATE_IDLE:
// 判断滚动到底部
if (lv.getLastVisiblePosition() == (lv.getCount() - 1)) {
}
// 判断滚动到顶部
if(lv.getFirstVisiblePosition() == 0{
}
break;
//滚动状态
case OnScrollListener.SCROLL_STATE_FLING:
break;
//触摸后滚动
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
break;
}
}
/** * 正在滚动 * firstVisibleItem第一个Item的位置 * visibleItemCount 可见的Item的数量 * totalItemCount item的总数 */
@Override
public void onScroll(AbsListView view, int firstVisibleItem,int visibleItemCount, int totalItemCount) {
}
});
/**
* OnTouchListener 监听
*/
listView.setOnTouchListener(new View.OnTouchListener()) {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
//接触到ListView移动时
break;
case MotionEvent.ACTION_UP:
//离开ListView时
break;
case MotionEvent.ACTION_DOWN:
//接触到ListView时
break;
}
return false;
}
});
/** * 重写ListView * @author guan * 2016-3-30 */
public class UserListView extends ListView {
public UserListView(Context context) {
super(context);
}
public UserListView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public UserListView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
MeasureSpec.AT_MOST);
super.onMeasure(widthMeasureSpec, expandSpec);
}
}
参考博客:四种方案解决ScrollView嵌套ListView问题