1.布局

布局的内部除了放置控件外,也可以放置布局,通过多层布局的嵌套,我们就能够完成一些 比较复杂的界面实现

¨四种基本布局

LinearLayout
RelativeLayout
FrameLayout
TableLayout
2.补充知识
View
所有用户交互的组件(Widget)的基类
一个View对象占据矩形区域,并负责这个区域内的像素绘制和事件处理。  
ViewGroup
继承自View类
ViewGroup类是所有布局(layouts)的基类,布局类是不可见的,用于容纳其他View类对象并且定义它们的布局属性。
有两种方式来定义布局:
1.使用XML文件
     XML布局文件
       保存在目录res/layout

       扩展名必须是xml,文件名必须是小写字母
       ADT会对每一个xml布局文件生成R类的一个变量,例如:main.xml-->R.layout.main
       关键的API:setContentView()
    使用XML方式的优点

       将应用程序的界面与应用程序的逻辑行为分离。
       你可以在不需要修改和重新编译源代码的情况下,来修改和调整程序界面。
   布局参数

       XML 布局的命名方式:layout_something 
       例如:layout_width定义了组件的宽度。
       组件的布局参数用来告诉容纳这个组件的布局这个组件希望怎样被布置。

2.使用Java代码来编写(Instantiate layout elements at runtime)

LinearLayout

线性布局将所有它的子组件排列成一列或者一行。
默认的排列方向是horizontal(水平).
布局参数
水平方向的线性布局中的控件, android:layout_gravity属性只在垂直方向上起作用
垂直方向的线性布局中的控件, android:layout_gravity属性只在水平方向上起作用
指示该线性布局的组件需要额外占据的空间。
0表示该组件应该是被压缩的。
否则组件将按比例在属性大于0组件中来分配额外的空间。

android:orientation="horizontal"

RelativeLayout
容器内的子元素是由其相对于其他子元素或者容器的位置来决定的。

android:layout_alignParentLeft、

android:layout_alignParentTop、

android:layout_alignParentRight、

android:layout_alignParentBottom、

android:layout_centerInParent

FrameLayout

FrameLayout 相比于前面两种布局就简单太多了,因此它的应用场景也少了很多。这种 布局没有任何的定位方式,所有的控件都会摆放在布局的左上角。

TableLayout

自定义控件

方法一
创建一个新的布局title.xml
在活动布局中使用<include>标签引用title.xml (只有显示效果,没有行为)
方法二
创建一个LinearLayout的子类TitleLayout,并使用title.xml作为布局
在活动布局中引用TitleLayout(既有显示效果,又有行为)
 
¨ListView
ListView的简单用法
  定制ListView的界面
  ListView的点击事件
  提升ListView的运行效率
  ListView是Android中最常用的控件。
当需要显示列表的使用就会使用ListView,例如:手机的联系人,微信聊天信息,查看微博信息等等
使用:

n使用ListView显示一组字符串
//activity_main.xml
<ListView
android:id="@+id/list_view"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</ListView>
//使用String类型的数组
//调用ArrayAdapter的构造函数来对数据进行包装
public class MainActivity extends Activity {
private String[] data = { "Apple", "Banana", "Orange", "Watermelon", "Pear", "Grape", "Pineapple", "Strawberry", "Cherry", "Mango" };
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, data);
ListView listView = (ListView) findViewById(R.id.list_view); listView.setAdapter(adapter);
} }
ArrayAdapter(Context context, int resource, T[] objects)
¨context: 上下文对象,一般会传入Activity对象
¨resource : 一个包含TextView的布局,一般会使用系统提供的布局资源
¨objects:数据数组,如果数组的数据类型不是String,则会调用这个类的toString方法
Adapter中文名称适配器,用来给ListView提供
¨数据
¨布局资源

提升ListView效率

ngetView方法中有一个convertView参数,可以直接利用之前加载好的布局,从而提升代码效率

  

Android05-UI02布局,自定义控件,ListView的更多相关文章

  1. 【Android基础】listview控件的使用(4)-----自定义布局的listview的使用

    前面我介绍了listview控件的不同用法,但是这些用法在实际的开发项目中是不足以满足需求的,因为前面的几种用法只能简单的显示文本信息,而且布局都比较单一,很难做出复杂的结果,在实际的开发项目中,90 ...

  2. Android精通:View与ViewGroup,LinearLayout线性布局,RelativeLayout相对布局,ListView列表组件

    UI的描述 对于Android应用程序中,所有用户界面元素都是由View和ViewGroup对象构建的.View是绘制在屏幕上能与用户进行交互的一个对象.而对于ViewGroup来说,则是一个用于存放 ...

  3. 2、Android-UI(自定义控件&ListView)

    2.4.系统控件不够用创建自定义控件 控件的和布局的集成结构: 所有的控件都是间接或者直接集成View的 所有的布局都是直接或者间接继承自ViewGroup的 View是Android种最基本的一种U ...

  4. Day4 自定义控件/ListView/RecyclerView

    创建自定义控件 引入布局 在新增的title.xml中创建一个自定义的标题栏: <LinearLayout xmlns:android="http://schemas.android. ...

  5. 自动显示隐藏布局的listView

    借助View的OnTouchListener接口来监听listView的滑动,通过比较与上次坐标的大小,判断滑动方向,并通过滑动方向来判断是否需显示或者隐藏对应的布局,并且带有动画效果. 1.自动显示 ...

  6. Android开发--微信布局(ListView)基本运用

    ListView 1.ListVeiw 用来展示列表的View. 2.适配器 用来把数据映射到ListView上的中介. 3.数据    具体的将被映射的字符串,图片,或者基本组件. 根据列表的适配器 ...

  7. android样式布局---&gt;ListView(附上源代码)

    在android应用开发过程中,Listview 是经常使用的数据展现控件,往往用于显示列表形式的数据. 假设只显示数据往往会显得非常单调.非常多时候依据须要定义不同的item 背景选项.比如定义数据 ...

  8. Xamarin自定义布局系列——ListView的一个自定义实现ItemsControl(横向列表)

    在以前写UWP程序的时候,了解到在ListView或者ListBox这类的列表空间中,有一个叫做ItemsPannel的属性,它是所有列表中子元素实际的容器,如果要让列表进行横向排列,只需要在Xaml ...

  9. 两种布局的ListVIew Adapter。例如微信对话界面

    这个界面  实现的不是微信对话界面.实现的是,focus的状态下,变为放大的另一种布局 重点: 一.定义类型个数 private final int TYPE_COUNT = 2;    privat ...

随机推荐

  1. 使用NODEJS+REDIS开发一个消息队列以及定时任务处理

    作者:RobanLee 原创文章,转载请注明: 萝卜李 http://www.robanlee.com 源码在这里: https://github.com/robanlee123/RobCron 时间 ...

  2. SSM三大框架整合详细教程

    使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...

  3. oracle 序列

    查询序列值 select td_prodline_attr_seq.nextval from dual     查询用户建的所有序列 用户名 必须大写select SEQUENCE_OWNER,SEQ ...

  4. 总结:整理 oracle异常错误处理 .

    5.1 异常处理概念 5.1.1 预定义的异常处理 5.1.2 非预定义的异常处理 5.1.3 用户自定义的异常处理 5.1.4  用户定义的异常处理 5.2 异常错误传播 5.2.1 在执行部分引发 ...

  5. Python 装饰器学习以及实际使用场景实践

    前言 前几天在看Flask框架,对于非常神奇的@语法,不是非常的理解,回来补装饰器的功课.阅读很多的关于装饰器的文章,自己整理一下,适合自己的思路的方法和例子,与大家分享. app = Flask(_ ...

  6. 你与优秀源码之间只差一个 Star

    fir.im Weekly - 你与优秀源码之间只差一个 Star   说起开源社区,Github 是一个不可缺少的存在.作为全球最大的同性交友网站,上面有太多优秀的开源代码库和编程大神,让无数开发者 ...

  7. MYSQL 表分区的 3 方法

    背景知识: 表分区是把逻辑上同一范围的数据保存到同一个文件中,就和超市一样,把同类商品放在同一个区域,把不同的商品放在不同的地方.不同的是超市中 是根据用途分类的,表分区是根据它的取值区间来分的. 分 ...

  8. 多级列表——ExpandableListView

    ExpandableListView控件提供的是一个多级列表(一般是两级),我们先来看一下效果图,如图4.18所示为头部列表,单击其中的每一项下面会显示第二级列表,如图4.19所示. 从图4.18和图 ...

  9. 【POJ 2823 Sliding Window】 单调队列

    题目大意:给n个数,一个长度为k(k<n)的闭区间从0滑动到n,求滑动中区间的最大值序列和最小值序列. 最大值和最小值是类似的,在此以最大值为例分析. 数据结构要求:能保存最多k个元素,快速取得 ...

  10. 24点游戏&&速算24点(dfs)

    24点游戏 Time Limit: 3000/1000MS (Java/Others)     Memory Limit: 65535/65535KB (Java/Others) Submit Sta ...