Android中的Linerlayout布局和RelativeLayout布局,ListView组件

布局

1. LinerLayout:线性布局:LinearLayout是线性布局控件,它包含的子控件将以横向或竖向的方式排列,可以再一个线性布局里面加入相对布局。Android:orientation:设置它内容的对其方向(横向/竖向),支持widget权重。

属性:

[html]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. <span style="white-space:pre">    </span>  android:layout_width="fill_parent"  
  2.    <span style="white-space:pre"> </span>  android:layout_height="fill_parent"  
  3.   <span style="white-space:pre">  </span>  android:orientation="horizontal"  
  4.   <span style="white-space:pre">  </span>  android:padding="10dip"  
  5.           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形式。


[java]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package com.test.database;  
  2.   
  3. import java.util.List;  
  4.   
  5. import com.test.database.R.id;  
  6. import com.test.database.dao.PersonDao;  
  7. import com.test.database.model.Person;  
  8.   
  9. import android.support.v4.app.Fragment;  
  10. import android.app.Activity;  
  11. import android.os.Bundle;  
  12. import android.view.LayoutInflater;  
  13. import android.view.Menu;  
  14. import android.view.MenuItem;  
  15. import android.view.View;  
  16. import android.view.ViewGroup;  
  17. import android.widget.BaseAdapter;  
  18. import android.widget.LinearLayout;  
  19. import android.widget.ListView;  
  20. import android.widget.TextView;  
  21. import android.os.Build;  
  22.   
  23. public class MainActivity extends Activity {  
  24.     List<Person> persons ;  
  25.     Person person1 ;  
  26.           
  27.     @Override  
  28.     protected void onCreate(Bundle savedInstanceState) {  
  29.         super.onCreate(savedInstanceState);  
  30.         setContentView(R.layout.activity_main);  
  31.           
  32.          
  33.           
  34.         ListView lv = (ListView)findViewById(R.id.lv);  
  35.           
  36.         lv.setAdapter(new MyAdapter());  
  37.       
  38.     }  
  39.       
  40.     class MyAdapter extends BaseAdapter {  
  41.   
  42.         @Override  
  43.         public int getCount() {  
  44.             // TODO Auto-generated method stub  
  45.             return 1;  
  46.         }  
  47.   
  48.         @Override  
  49.         public Object getItem(int arg0) {  
  50.             // TODO Auto-generated method stub  
  51.             return null;  
  52.         }  
  53.   
  54.         @Override  
  55.         public long getItemId(int arg0) {  
  56.             // TODO Auto-generated method stub  
  57.             return 0;  
  58.         }  
  59.   
  60.         @Override  
  61.         public View getView(int position, View convertView, ViewGroup parent) {  
  62.             LayoutInflater flater = null;  
  63.             View view = null;  
  64.               
  65.               
  66.             if(convertView == null) {  
  67.                 // 布局填充器对象, 用于把xml布局转换成view对象  
  68.                 flater = MainActivity.this.getLayoutInflater();  
  69.                 view = flater.inflate(R.layout.person_item,null);  
  70.             } else {  
  71.                 view = convertView;  
  72.             }  
  73.               
  74.                       
  75.               
  76.             TextView tv_name = (TextView)view.findViewById(R.id.tv_name);  
  77.             TextView tv_age = (TextView)view.findViewById(R.id.tv_age);  
  78.               
  79.             tv_name.setText("11z");  
  80.             tv_age.setText("22");  
  81.               
  82.             return view;                  
  83.         }  
  84.     }  
  85. }  

这是自己写适配器的例子,还可以用比较常用方便的android提供的适配器,


ArrayAdapter(Context context,View view,String[] string)

ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
         ArrayListDemo.this, android.R.layout.simple_list_item_1,
         adapterData);

这段代码是创建一个数组适配器的代码,里面有三个参数,第一个参数是上下文,就是当前的Activity, 第二个参数是android sdk中自己内置的一个布局,它里面只有一个TextView,这个参数是表明我们数组中每一条数据的布局是这个view,就是将每一条数据都显示在这个view上面;第三个参数就是我们要显示的数据。listView会根据这三个参数,遍历adapterData里面的每一条数据,读出一条,显示到第二个参数对应的布局中。


SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)


代码片段:

Map<String ,object> person = new HashMap<String, object>()

List<Map<String,object>> list = new ArrayList<Map<String,object>>

适配器的context就是上下文,data就是这个map集合list,resource是XML布局文件的资源ID,from数组是Map对象的String项,就是名称,然后to是指这个布局文件中的每个组件的资源ID,这样这个适配器就会遍历每一个list中的对象,然后把所有的map按照名称把对应的value数值放到布局文件对应的组件中,进行显示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值