java 固定listview,android 怎么给listview添加一个固定表头以及显示像table的效果 以及水平和竖直滚动 – seeu72的日志 – 网易博客...

定义一个样式一条线

name=”android:layout_width”>1dp

name=”android:layout_height”>fill_parent

name=”android:background”>#dadada

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

encoding=”utf-8″?>

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”

>

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

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

–>

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

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”

>

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不给赋值,用于填充屏幕的空白,显示好看

2.给界面**Activity新建一个main_layout,应用刚才的a_item.xml以及添加一个继承了listView的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″>

>

******

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 = 0; i < listDatas.size(); i++) {

//

显示列的id数

// holder.item1bjzb.setText((position + 1) + “”);

/*

listDatas 就是要显示的后台数据

*/

if (position == i) {

Map 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;

}

c73a4db40483459a243aff22e5fa4fa4.png

网上有很多解决 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,这样,当竖屏时,就会出现横向滚动条。

Android:layout_width=“fill_parent”

android:layout_height=“fill_parent”

android:fillViewport=“true”>

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后,虽然我已经设了Listview的宽度是fill_parent。但当内容较少时,Listview还是根据内容自适应宽度,不能满屏。

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值