定义一个样式一条线
<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 = 0; i < 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)