【Android开发】listview+popupwindow实践:日志列表

用listview的标准形式弄一个listview出来,然后创建一个布局item给listview,其中在adapter重写的getview()方法中把item布局给它。而且可以设置多个集合,在getview中给不同的textview赋值达到数据日志的效果(类似表格)

其中布局文件中:

为了一行三个textview能在竖列对齐,可以设置权重weight为相等,然后gravity=center居中,这时候后面的tv会受到前面的tv字数影响而与下面不对齐,这时候就可以设置width=0dp或者match_parent;

毕竟是日志,最好不要有Listview的点击事件的效果出来,于是可以在适配器adapter中重写方法:

@Override
public boolean isEnabled(int position) { //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初始化布局方式。(另一篇文章)

你可能感兴趣的:(android(移动开发),android,android,studio,布局,listview,popupwindow)