前一段时间系统的学习了安卓中的四大布局,RelativityLayout,LinerLayout,AbsoluteLayout,Framelayout,我常用的是LinerLayout和RelativityLayout,所以我就先简答说说这两个布局。
布局
1. LinerLayout:线性布局:LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,可以再一个线性布局里面加入相对布局。android:orientation:设置它内容的对其方向(横向/竖向),支持widget权重。
属性:
<span style="white-space:pre"> </span> android:layout_width="fill_parent"
<span style="white-space:pre"> </span> android:layout_height="fill_parent"
<span style="white-space:pre"> </span> android:orientation="horizontal"
<span style="white-space:pre"> </span> android:padding="10dip"
android:id="@+id/ll_item"
2.RelativityLayout(相对布局):可以设置组件和组件的相对关系,通过layout_XX方法实现。
RelativeLayout用到的一些重要的属性:
第一类:属性值为true或false
android:layout_centerHrizontal 水平居中
android:layout_centerVertical 垂直居中
android:layout_centerInparent 相对于父元素完全居中
android:layout_alignParentBottom 贴紧父元素的下边缘
android:layout_alignParentLeft 贴紧父元素的左边缘
android:layout_alignParentRight 贴紧父元素的右边缘
android:layout_alignParentTop 贴紧父元素的上边缘
android:layout_alignWithParentIfMissing 如果对应的兄弟元素找不到的话就以父元素做参照物
第二类:属性值必须为id的引用名“@id/id-name”
android:layout_below 在某元素的下方
android:layout_above 在某元素的的上方
android:layout_toLeftOf 在某元素的左边
android:layout_toRightOf 在某元素的右边
android:layout_alignTop 本元素的上边缘和某元素的的上边缘对齐
android:layout_alignLeft 本元素的左边缘和某元素的的左边缘对齐
android:layout_alignBottom 本元素的下边缘和某元素的的下边缘对齐
android:layout_alignRight 本元素的右边缘和某元素的的右边缘对齐
第三类:属性值为具体的像素值,如30dip,40px
android:layout_marginBottom 离某元素底边缘的距离
android:layout_marginLeft 离某元素左边缘的距离
android:layout_marginRight 离某元素右边缘的距离
android:layout_marginTop 离某元素上边缘的距离
ListView:最初的印象是使用它就可以不用在一组textView上包上ScrollView了,实现滑动展示数据。
使用方法,先findViewByid()获得这个listbiew--> lv;然后调用 lv.setAdapter(Adapter)设置适配器,这样,这个listview中展时,会调用这个适配器的方法,实现数据展示,关于适配器,晚上回来继续写,先睡会去上课。。
-----
继续分析listview,昨天说要set一个适配器,充当视图和数据之间的桥梁作用,mvc中的v和c,这个适配器要继承一个BaseAdapter,里面有四个方法,暂时用到的只有两个,getCount(),getView(int position, View convertView, ViewGroup parent);position是要提取的对象id,根据getCount的总数和屏幕位置,会连续间断调用这个方法,从0--count-1;converView是已经缓存的不在屏幕上显示的对象。还有一个类方法,
flater = MainActivity.this.getLayoutInflater();
view = flater.inflate(R.layout.person_item,null);
获得一个布局填充器,然后把一个布局文件变成一个view,getView()方法返回的就是一个xml布局的view形式。
package com.test.database;
import java.util.List;
import com.test.database.R.id;
import com.test.database.dao.PersonDao;
import com.test.database.model.Person;
import android.support.v4.app.Fragment;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.os.Build;
public class MainActivity extends Activity {
List<Person> persons ;
Person person1 ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ListView lv = (ListView)findViewById(R.id.lv);
lv.setAdapter(new MyAdapter());
}
class MyAdapter extends BaseAdapter {
@Override
public int getCount() {
// TODO Auto-generated method stub
return 1;
}
@Override
public Object getItem(int arg0) {
// TODO Auto-generated method stub
return null;
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater flater = null;
View view = null;
if(convertView == null) {
// 布局填充器对象, 用于把xml布局转换成view对象
flater = MainActivity.this.getLayoutInflater();
view = flater.inflate(R.layout.person_item,null);
} else {
view = convertView;
}
TextView tv_name = (TextView)view.findViewById(R.id.tv_name);
TextView tv_age = (TextView)view.findViewById(R.id.tv_age);
tv_name.setText("11z");
tv_age.setText("22");
return view;
}
}
}
这是自己写适配器的例子,还可以用比较常用方便的android提供的适配器,
ArrayAdapter(Context context,View view,String[] string)