1 常用属性

1.1 设置按下时背景透明

android:listSelector="@android:color/transparent"

1.2 取消滚动条

android:scrollbars="none"

1.3 ListView中分割线的设置

1.3.1 设置分割线

(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> 

1.3.2 取消分割线

android:divider="@null" //最常用方法android:divider="#00000000"lv.setDividerHeight(0) //高度设为0

1.4 设置ListView需要显示在第几项

listView.setSelection(N);//N是需要显示的第N个Item//使用以下代码实现平滑移动listview.smoothScrollBy(moveInstance, duration);listview.smoothScrollByOffset(offset);//滚动offset个itemlistview.smoothScrollToPosition(index);//跳转到index位置

1.5 遍历ListView中的所有Item

for(int i = 0; listView.getChildCount(); i++) { View view = listView.getChildAt(i); }

2 处理ListView为空的情况

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设置为可见);

3 怎么判断listview滚动条是滚动到顶部还是底部

/** * 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;    }});

4 ScrollView嵌套ListView滑动冲突,与显示不全解决方法

/** * 重写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问题

更多相关文章

  1. Android--ListView 分割线
  2. android分割线
  3. shape画listview分割线
  4. C#如何绘制PDF嵌套表格?绘制PDF嵌套表格的步骤
  5. 如何从Perl中的目录中分辨文件
  6. 在嵌套使用if语句时,C语言规定else总是什么?
  7. golang接口可以嵌套吗
  8. 骚操作!嵌套 JSON 秒变 Dataframe!
  9. 详细解说三种PHP嵌套HTML的写法

随机推荐

  1. Qt for Android获取手机序列号
  2. Android百度地图SDK:隐藏比例尺,隐藏百度LO
  3. 新版NDK环境搭建(免Cygwin,超级快)
  4. 【Fragment】 Android Fragment生命周期
  5. Android_布局属性大全
  6. android发送restful风格的http请求
  7. Android应用程序键盘(Keyboard)消息处理机
  8. 阅读《Android 从入门到精通》(31)——Inte
  9. FregServer进程,获取ServiceManager代理对
  10. Android Studio查看错误信息