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 Studio 自动更新失败解决方法
  2. 跟大家分享下Android布局文件layout.xml的一些属性值。
  3. android 4.2修改设置菜单的背景颜色
  4. Android:控件属性
  5. [android]控件ProgressBar/ProgressDialog/SeekBar简介
  6. Android(安卓)layout布局属性、标签属性总结大全
  7. 保证editView大小不变防止输入过多变形以及TextView的style引用
  8. Android(安卓)layout属性大全
  9. layout布局属性

随机推荐

  1. Android 使用RecyclerVeiw加载复杂布局
  2. Android访问中央气象台的天气预报API得到
  3. Android(安卓)FileProvider详细解析和踩
  4. android之自定义渐变颜色(二)
  5. Android NDK区分第一次起机-sqlite3 oper
  6. [下载]Android 手机十大必备软件
  7. android通过Base64往服务器上传图片和对
  8. 2017.03.12 Android卡顿分析
  9. Android 蓝牙模块
  10. Android 开发艺术探索笔记之二 -- IPC 机