1、写一个控件,居于父控件的中间,且宽度为截面的一半:
<!-- 一个线性布局 -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/action_settings"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="horizontal"
android:weightSum="2" >
<!-- 按钮 -->
<Button
android:id="@+id/bt"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="这是一个按钮" />
</LinearLayout>
2、ListView的优化
常见的ListView优化方法有一下几点:
(1)是在解析布局文件和从布局文件中获取各个控件的步骤做优化
代码如下:只有在item布局文件没有重用的时候才去获取布局文件,然后将布局文件的每个控件都封装到ViewHolder中,给convertView设置标签,需要的时候直接取出这个标签对象,给标签对象的属性(也就是item中的各个控件)设置内容
public View getView(int position,
View convertView, ViewGroup parent) {
Log.i("TAG", "convertView="+convertView);
//1.构建item布局对象(饺子皮)
ViewHolder vh=null;
if(convertView==null){
convertView=View.inflate(context,itemLayoutId,null);
//一个convertView一个ViewHolder
vh=new ViewHolder();
vh.imageView=(ImageView)convertView.findViewById(R.id.imageView1);
vh.nameTV=(TextView)convertView.findViewById(R.id.textView1);
vh.phoneTV=(TextView)convertView.findViewById(R.id.textView2);
//convertView关联ViewHolder
convertView.setTag(vh);
}else{
vh=(ViewHolder)convertView.getTag();
}
//2.获得某个item数据(饺子馅)
Contact c=contacts.get(position);
//3.将item数据放到item布局中(包饺子)
//获得view中的子元素
/*ImageView imageView=(ImageView)
convertView.findViewById(R.id.imageView1);
TextView nameEt=(TextView)convertView.findViewById(R.id.textView1);
TextView phoneEt=(TextView)convertView.findViewById(R.id.textView2);*/
//在子元素中设置数据
vh.imageView.setImageResource(c.getPhotoId());
vh.nameTV.setText(c.getName());
vh.phoneTV.setText(c.getPhone());
//4.返回item对象(饺子)
return convertView;//(item)
}
class ViewHolder{//view视图对象的持有者
ImageView imageView;
TextView nameTV;
TextView phoneTV;
}//数据量比较大时借助此对象保存convertView对象中的子元素对象
3、设置监听,当用户快速滑动时,不加载数据