用listview的标准形式弄一个listview出来,然后创建一个布局item给listview,其中在adapter重写的getview()方法中把item布局给它。而且可以设置多个集合,在getview中给不同的textview赋值达到数据日志的效果(类似表格)
其中布局文件中:
为了一行三个textview能在竖列对齐,可以设置权重weight为相等,然后gravity=center居中,这时候后面的tv会受到前面的tv字数影响而与下面不对齐,这时候就可以设置width=0dp或者match_parent;
毕竟是日志,最好不要有Listview的点击事件的效果出来,于是可以在适配器adapter中重写方法:
@Overridepublic booleanisEnabled(intposition) {//android:clickable=""; 网上说可以这个,没试过,感觉不行// return super.isEnabled(position);一般情况是这个return false;
}
直接返回false不可点击。
一般来说总不能一个布局中全都是Listview吧,listview上面可以留下任何一个view,通过这个方法:
listView.addHeaderView(tx);
我再这里设置了listview 3*N 日志的顶部为一个textview,其实也可以是任何一个view的。
(小积累:关于textview的线操作
textview.getPaint().setFlags(Paint. STRIKE_THRU_TEXT_FLAG );//中间横线
textview.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG);//下划线
textview.getPaint().setAntiAlias(true);// 抗锯齿
行间距,不是行高!!!
1、android:lineSpacingExtra
设置行间距,如”3dp”。
2、android:lineSpacingMultiplier
设置行间距的倍数,如”1.2″。
)
疑惑:不清楚listview布局显示和oncreate中的主布局的关系是怎么弄的。
在上一个模仿QQ右上角小加号的案例中,我用的popuwindow里面装了listview,相关xml并未涉及任何有关listview的代码,只是新建了一个布局item,然后在adapter中把这个布局给了getview()。
oncreate():直接是setcontentview(R.layout.main);
现在没有popuwindow,仍然是新建了item(里面没有listview布局):
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);//这里不能item布局,因为这时候还没有list
。。。。。
setContentView(listView); //必不可少,否则不能显示出listview
}
最终效果是正常的,注意,如果在item布局里面加入了什么其他东西,那么这个东西每行也会有的。
1、如何让布局变成view
1最常用:
LayoutInflater inflater=(LayoutInflater)getSystemServi
ce(Context.LAYOUT_INFLATER_SERVICE);
View view=inflater.inflate(R.layout.layoutview, null);
2
view=View.inflate(getApplicationContext(),R.layout.buju,null);
3
view=Layoutinflater.from(getApplicationContext()).inflate(R.layout.xx,null);
2、listview初始化布局方式。(另一篇文章)