android ListView 几个重要属性

由于这两天在做listView的东西,所以整理出来一些我个人认为比较特别的属性,通过设置这样的属性可以做出更加美观的列表


首先stackFromBottom属性,这只该属性之后你做好的列表就会显示你列表的最下面,值为true和false

android:stackFromBottom="true" 

        

第二transciptMode属性,需要用ListView或者其它显示大量Items的控件实时跟踪或者查看信息,并且希望最新的条目可以自动滚动到可视范围内。通过设置的控件transcriptMode属性可以将Android平台的控件(支持ScrollBar)自动滑动到最底部。
android:transcriptMode="alwaysScroll" 


第三cacheColorHint属性,很多人希望能够改变一下它的背景,使他能够符合整体的UI设计,改变背景背很简单只需要准备一张图片然后指定属性android:background="@drawable/bg",不过不要高兴地太早,当你这么做以后,发现背景是变了,但是当你拖动,或者点击list空白位置的时候发现ListItem都变成黑色的了,破坏了整体效果。

如果你只是换背景的颜色的话,可以直接指定android:cacheColorHint为你所要的颜色,如果你是用图片做背景的话,那也只要将android:cacheColorHint指定为透明(#00000000)就可以了


第四divider属性,该属性作用是每一项之间需要设置一个图片做为间隔,或是去掉item之间的分割线

android:divider="@drawable/list_driver"  其中  @drawable/list_driver 是一个图片资源,如果不想显示分割线则只要设置为android:divider="@drawable/@null" 就可以了


第五fadingEdge属性,上边和下边有黑色的阴影

android:fadingEdge="none"设置后没有阴影了~


第六scrollbars属性,作用是隐藏listView的滚动条,

android:scrollbars="none"与setVerticalScrollBarEnabled(true);的效果是一样的,不活动的时候隐藏,活动的时候也隐藏


第七fadeScrollbars属性,android:fadeScrollbars="true"  配置ListView布局的时候,设置这个属性为true就可以实现滚动条的自动隐藏和显示。


第八fastScrollEnabled属性 ,

很多开发者不知道ListView列表控件的快速滚动滑块是如何启用的,这里Android开发网告诉大家,辅助滚动滑块只需要一行代码就可以搞定,如果你使用XML布局只需要在ListView节点中加入  android:fastScrollEnabled="true" 这个属性即可,而对于Java代码可以通过myListView.setFastScrollEnabled(true); 来控制启用,参数false为隐藏。 还有一点就是当你的滚动内容较小,不到当前ListView的3个屏幕高度时则不会出现这个快速滚动滑块,同时该方法仍然是AbsListView的基础方法,可以在ListView或GridView等子类中使用快速滚动辅助。


第九drawSelectorOnTop属性

When set to true, the selector will be drawn over the selecteditem. Otherwise the selector is drawn behind the selected item. Thedefault value is false.

android:drawSelectorOnTop="true" 点击某一条记录,颜色会显示在最上面,记录上的文字被遮住,所以点击文字不放,文字就看不到

android:drawSelectorOnTop="false"点击某条记录不放,颜色会在记录的后面,成为背景色,但是记录内容的文字是可见的

第十 listSelector

android:listSelector="#00000000"
进行上面的设置之后,ListView点击item时就没有任何现象了,当你不使用android:listSelector属性,默认会显示选中的item为橙黄底色,有时候我们需要去掉这种效果:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Android中的ListView是一个常用的控件,用于展示数据列表,但是在数据非常长的情况下,用户在滚动ListView的时候发现,表头也会随着滚动消失,不再显示在顶部,这个体验并不好。 为了解决这个问题,我们可以通过自定义ListView的头部来实现表头的固定。具体实现如下: 1.在ListView的布局文件中,添加一个LinearLayout布局,作为表头,同时将ListView的头部设为这个LinearLayout。 2.为该LinearLayout添加一个固定高度的属性,例如: android:layout_height="50dp"。这个高度取决于表头的高度。 3.在ListView的布局文件中,为ListView添加下面的属性android:scrollbars="none",这样就可以禁止滚动条的显示。 4.在Activity中,我们需要定义一个适配器继承自BaseAdapter类。在getView方法中,我们需要添加一段代码: if(position == 0){ headerView = convertView; convertView = null; } 这样,在ListView的第一个元素也就是表头处,我们就可以设置为固定不动的headerView。 5.最后,我们需要在Activity的onCreate方法中,为ListView设置adpter。 通过以上几个步骤,我们就可以实现ListView表头的固定。这样,当我们滚动ListView时,表头仍然保持在屏幕顶部,用户可以清晰地看到表头的信息。 ### 回答2: Android中的ListView是一个非常常用的控件,主要用于展示一系列数据。但是,在ListView展示大量数据时,往往需要我们实现固定列头的功能,以便用户更好地查看数据。下面,我将分享一下如何实现[ListView固定列头](https://blog.csdn.net/u010687392/article/details/78822213)的方法。 首先,我们可以使用两个ListView来实现这个功能。第一个ListView用于展示列头,第二个ListView用于展示数据。我们将第二个ListView的滚动事件监听器设置为:当滑动ListView时,首先将第二个ListView的内容向上滚动,然后将第一个ListView的内容向下滚动,以此来实现列头的固定。但是,这种方法有一个问题,就是使用两个ListView会影响ListView的滑动效率。 另外,我们还可以通过自定义控件的方式实现固定列头。首先,我们要新建一个继承自ListView的类MyListView。然后,在这个类中,我们重写了onMeasure()方法,来计算出第一行item的高度,这个高度将会被用作上面那个固定的列头的高度。并且在ListView中添加HeaderView,因为HeaderView不会随着滚动而滚动。接下来,我们将一个LinearLayout嵌套在MyListView中,用于显示固定列头。在LinearLayout中,我们将会创建一个子控件,用于展示每个列的列名,然后再创建一个HorizontalScrollView来放置起下面的ListView。在这个方法中,我们还需要重写onScrollChanged()方法,使得当下方的ListView滚动时,上方的列头也会跟着滚动。 以上两种方法,都可以实现ListView固定列头的效果。但是,为了不影响ListView的滑动效率以及为了加强代码复用性,我们建议使用自定义控件的方式实现固定列头。自定义控件的方式虽然复杂一些,但是这样做将会更加稳定和可扩展。 ### 回答3: 在Android中,ListView是一个常见的控件,用于在列表中显示数据。然而,在一些情况下,我们需要将ListView的列头固定,使其在滚动时保持在屏幕顶部,以便用户在滚动后仍能了解列表内容。 首先,我们需要在ListView的布局文件中添加一个Header View,用于显示列头,这可以使用ListView的addHeaderView()方法来实现。例如,我们可以在ListView的XML布局文件中添加以下代码: ```xml <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- 添加Header视图 --> <LinearLayout android:id="@+id/header" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <!-- 列头 --> <TextView android:id="@+id/textview_header_1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="列头1" /> <TextView android:id="@+id/textview_header_2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="列头2" /> <TextView android:id="@+id/textview_header_3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="列头3" /> </LinearLayout> </ListView> ``` 接下来,在代码中使用ViewTreeObserver来监听ListView的布局变化,并在布局完成后将Header View添加到ListView中。在onCreate()方法中添加以下代码: ```java final ListView listView = findViewById(R.id.listview); final LinearLayout headerView = findViewById(R.id.header); final TextView textViewHeader1 = findViewById(R.id.textview_header_1); final TextView textViewHeader2 = findViewById(R.id.textview_header_2); final TextView textViewHeader3 = findViewById(R.id.textview_header_3); // 监听布局变化 ViewTreeObserver vto = listView.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // 移除监听 listView.getViewTreeObserver().removeOnGlobalLayoutListener(this); // 获取第一项的高度 int height = listView.getChildAt(0).getHeight(); // 将Header视图添加到ListView listView.addHeaderView(headerView); // 设置Header视图的高度 headerView.setLayoutParams(new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, height)); // 设置列头的宽度 textViewHeader1.setWidth(headerView.getWidth() / 3); textViewHeader2.setWidth(headerView.getWidth() / 3); textViewHeader3.setWidth(headerView.getWidth() / 3); } }); ``` 这个方法在ListView的布局完成后被调用,它首先获取第一项的高度,并将Header View添加到ListView中。然后,将HeaderView的高度设置为第一项的高度。最后,设置列头的宽度以便它们与ListView中的条目对齐。 最后,在ListView中使用OnScrollListener监听滚动事件,并在滚动时调整Header View的位置,使其保持在ListView的顶部。在Activity中添加以下代码: ```java listView.setOnScrollListener(new OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { // TODO Auto-generated method stub } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { // 获取Header View View headerView = listView.getChildAt(0); // 如果ListView的第一项可见,则将Header View添加到WindowManager中 if (listView.getFirstVisiblePosition() == 0) { headerView.setVisibility(View.VISIBLE); // 获取屏幕宽度 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); int screenWidth = metrics.widthPixels; // 调整Header View的位置 WindowManager.LayoutParams layoutParams = (WindowManager.LayoutParams) headerView.getLayoutParams(); layoutParams.x = 0; layoutParams.y = 0; layoutParams.width = screenWidth; getWindowManager().updateViewLayout(headerView, layoutParams); } else { headerView.setVisibility(View.GONE); } } }); ``` 这个方法在滚动时被调用,它首先获取Header View。如果ListView的第一项可见,则将Header View 添加到WindowManager中,并将其调整到屏幕顶部。否则,将其隐藏。 综上所述,通过在布局文件中添加HeaderView,监听布局变化,设置列头宽度和高度,以及在滚动时调整Header View的位置,我们可以实现在Android中使ListView的列头固定的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值