怎么让listvie列表头显示出来

怎么让listvie列表头显示出来,第1张

在代码中使用 listView.addHeaderView(…) 方法可以在ListView组件上方添加上其他组件,并且连结在一起像是一个新组件。如果多次使用 .addHeaderView(…) ,则最先添加的组件在最上方,按添加的先后顺序由上到下罗列。 

此时listView 的 position = 0 的位置对应的是view1,而不再是原来listView中的第一条了。如下图所示: 

定义一个样式一条线

<style name="vertical_layout">

<item name="android:layout_width">1dp</item>

<item name="android:layout_height">fill_parent</item>

<item name="android:background">#dadada</item>

</style>

1.为表头新建一个layout:a_item.xml(一共设置3个列名)

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/a_item"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:background="@android:color/white"

android:cacheColorHint="#00000000"

android:orientation="horizontal" >

<TextView

android:id="@+id/item1bzrbjzb"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

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

android:ellipsize="none"

android:gravity="center"

android:paddingBottom="5dp"

android:paddingTop="5dp"

android:singleLine="false"

android:textSize="15.0sp" >

</TextView>

<View style="@style/vertical_layout" /><!-- 一条线 -->

<TextView

android:id="@+id/item2bzrbjzb"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

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

android:ellipsize="none"

android:gravity="center"

android:paddingBottom="5dp"

android:paddingTop="5dp"

android:singleLine="false"

android:text="@string/bzr_km" <!-- 列名-->

android:textColor="@android:color/black"

android:textSize="15.0sp" >

</TextView>

<View style="@style/vertical_layout" /><!-- 一条线 -->

<TextView

android:id="@+id/item3bzrbjzb"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

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

android:ellipsize="none"

android:gravity="center"

android:paddingBottom="5dp"

android:paddingTop="5dp"

android:singleLine="false"

android:text="@string/bzr_bjqk" <!-- 列名-->

android:textColor="@android:color/black"

android:textSize="15.0sp" >

</TextView>

<View style="@style/vertical_layout" /><!-- 一条线 -->

<TextView

android:id="@+id/item4bzrbjzb"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

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

android:ellipsize="none"

android:gravity="center"

android:paddingBottom="5dp"

android:paddingTop="5dp"

android:singleLine="false"

android:text="@string/bzr_jfjgl"<!-- 列名-->

android:textColor="@android:color/black"

android:textSize="15.0sp" >

</TextView>

<TextView

android:id="@+id/item6ctj"

android:layout_width="100.0dip"

android:layout_height="wrap_content"

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

android:ellipsize="none"

android:gravity="center"

android:paddingBottom="5dp"

android:paddingTop="5dp"

android:singleLine="false" >

</TextView>

</LinearLayout>

第一个和最后一个textView不给赋值,用于填充屏幕的空白,显示好看

2.给界面**Activity新建一个main_layout,应用刚才的a_item.xml以及添加一个继承了listView的view对象HVListView

***

<include layout="@layout/a_item" />

<com.gdtech.znpc.android.view.HVListView

android:id="@android:id/list"

android:background="@android:color/white" android:fastScrollEnabled="true"

android:fadingEdgeLength="0.0sp" android:layout_width="wrap_content"

android:layout_height="fill_parent" android:drawSelectorOnTop="false"

android:divider="#dadada"

android:dividerHeight="1.0dip"

android:cacheColorHint="#00000000">

</com.gdtech.znpc.android.view.HVListView >

******

3.获取屏幕的分辨率 为每个表头的设置宽度

private DisplayMetrics dm = new DisplayMetrics()

getWindowManager().getDefaultDisplay().getMetrics(dm)

private int w = dm.widthPixels / 16// 当前分辨率 宽度 分为16份

获取a_item里面的每个textView的id 进行宽度设置

mListView = (HVListView) findViewById(android.R.id.list)

// 设置列头

mListView.mListHead = (LinearLayout) findViewById(R.id.a_item)

// 设置表头的宽度

TextView t11 = (TextView) findViewById(R.id.item1bzrbjzb)

TextView t12 = (TextView) findViewById(R.id.item2bzrbjzb)

TextView t13 = (TextView) findViewById(R.id.item3bzrbjzb)

TextView t14 = (TextView) findViewById(R.id.item4bzrbjzb)

//t13.setText("成绩")

t11.setWidth(w * 0) //不显示第一列

t12.setWidth(w * 3)

t13.setWidth(w * 6)

t14.setWidth(w * 6)

4.给HVListView添加适配器,并设置每列的宽度和表头对应

class ViewHolderbjzb { // 这个类里面定义的TextView数量和表头里面的TextView要一致

TextView item1bjzb

TextView item2bjzb

TextView item3bjzb

TextView item4bjzb

}

mAdapter = new DataAdapter1()

mListView.setAdapter(mAdapter)

private class DataAdapter1 extends BaseAdapter {

@Override

public int getCount() {

return hang// 固定显示多少行数据

}

@Override

public View getView(int position, View convertView, ViewGroup parent) {

if (convertView == null) {

convertView = mInflater1.inflate(R.layout.bzr_fx_bjzb_head_item,

null)

holder = new ViewHolderbjzb()

holder.item1bjzb = ((TextView) convertView

.findViewById(R.id.item1bzrbjzb))

holder.item2bjzb = ((TextView) convertView

.findViewById(R.id.item2bzrbjzb))

holder.item3bjzb = ((TextView) convertView

.findViewById(R.id.item3bzrbjzb))

holder.item4bjzb = ((TextView)convertView

.findViewById(R.id.item4bzrbjzb))

// holder.item4bjzb=((TextView)

// convertView.findViewById(R.id.item4bjzb))

// holder.item5bjzb=((TextView)

// convertView.findViewById(R.id.item5bjzb))

convertView.setTag(holder)

// 设置表格内容宽度,与表头对应

holder.item1bjzb.setWidth(w * 0)

holder.item2bjzb.setWidth(w * 3)

holder.item3bjzb.setWidth(w * 6)

holder.item4bjzb.setWidth(w * 6)

holder.item1bjzb.setText("")

holder.item2bjzb.setText("")

holder.item3bjzb.setText("")

holder.item4bjzb.setText("")

// holder.item4bjzb.setText("")

// holder.item5bjzb.setText("")

} else {

holder = (ViewHolderbjzb) convertView.getTag()

}

for (int i = 0i <listDatas.size()i++) {

// 显示列的id数

// holder.item1bjzb.setText((position + 1) + "")

/*

listDatas 就是要显示的后台数据

*/

if (position == i) {

Map<String, Object>row = listDatas.get(position)

holder.item1bjzb.setText("用后台获取的数据 进行填充就可以"))

holder.item2bjzb.setText("用后台获取的数据 进行填充就可以"))

holder.item3bjzb.setText("用后台获取的数据 进行填充就可以"))

holder.item4bjzb.setText("用后台获取的数据 进行填充就可以"))

}

}

// 设置隔行颜色

if (position % 2 != 0) {

convertView.setBackgroundResource(R.drawable.listview_color_1)

} else {

convertView.setBackgroundResource(R.drawable.listview_color_2)

}

return convertView

}

网上有很多解决 android listview 水平和垂直滚动的代码,我没有按照他们说的做(以前没搜到 O(∩_∩)O~) 我采用的是添加HorizontalScrollView

Java代码

1. <ScrollView android:id="@+id/ScrollView01"

2. android:layout_height="300px"

3. android:layout_x="16px"

4. android:layout_y="84px"

5. android:layout_width="290px"

6. android:scrollbars="horizontal|vertical">

7. <HorizontalScrollView android:id="@+id/HorizontalScrollView01"

8. android:layout_height="fill_parent"

9. android:layout_width="wrap_content">

10. <LinearLayout android:id="@+id/LinearLayout02"

11. android:layout_width="wrap_content"

12. android:orientation="vertical"

13. android:layout_height="fill_parent">

14. <ListView android:id="@+id/listview"

15. android:layout_height="300px"

16. android:layout_width="fill_parent">

17. </ListView>

18. </LinearLayout>

19. </HorizontalScrollView>

20. </ScrollView>

我有一个Listview,因为横屏和竖屏原因,内容较多,竖屏会出现有些数据无法显示

于是让Listview在横向上可以滚动。

解决的办法是,用HorizontalScrollView包装Listview,这样,当竖屏时,就会出现横向滚动条。

<HorizontalScrollView

Android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:fillViewport="true">

<ListView android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:layout_weight="1"

android:background="@drawable/email_box"

android:id="@+id/advice_main_list_id"

android:padding="5dip"/>

</HorizontalScrollView>

但此时又出现了另一个问题,加上HorizontalScrollView后,虽然我已经设了Listview的宽度是fill_parent。但当内容较少时,Listview还是根据内容自适应宽度,不能满屏。

此时,需要设置一个属性就能解决问题了。设置HorizontalScrollView的android:fillViewport="true"。也就是设置是否将HorizontalScrollView的内容宽度拉伸以适应视口(viewport)

印象中Add 是一个方法,不能用等号赋值 。

你把 等号 去掉试试看,应该就可以了,然后用Me.ListView1.ColumnHeaders(i)对象的相关属性设置列的属性就可以了,例如: 设置列宽第一列的宽度为2000:Me.ListView1.ColumnHeaders(0).colwidth=2000


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11380284.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存