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. MySQL server has gone away报错

    1.最近做插入数据库,然后一直报一个错.mysql server has gone away.(如下图) 查了好多资料,终于解决了.. 1.可能是连接超时..进入php.ini,修改wait_time ...

  2. Java路径问题最终解决方案—可定位所有资源的相对路径寻址

    1.在Java项目中,应该通过绝对路径访问文件,以下为访问的常用方法: 第一种方法:类名.class.getResource("/").getPath()+文件名 第二种方法:Th ...

  3. PendingIntent概述

    一.定义 PendingIntent表示待定.等待.即将发生的意思.Intent表示的是立刻发生. PendingIntent的主要方法: int requestCode:表示请求码,跟intent是 ...

  4. python学习day4

    目录 一.迭代器 二.yield生成器 三.装饰器 四.递归 五.基础算法 迭代器 #1.在不使用for循环的情况下 li = [11 ,22, 33, 44] #count = len(li) #s ...

  5. QT:窗口最小化时显示一个小浮标

    有些窗口在自身最小化时要在桌面上显示一个小浮标,让用户利用这个小浮标进行各种操作(例如迅雷的悬浮窗一样),我试着用QT实现一下这个功能. PS:本来以为这个功能很简单,却搞了我两个晚上,泪奔... 思 ...

  6. 关于JavaScript的namespace命名空间

    写C或者JAVA习惯的人写JavaScript时可能会发现JavaScript并没有命名空间这一概念,当然如果没有接触过命名空间的程序猿(比如写js,PHP,Python)也可能对命名空间不关注或者不 ...

  7. 如何让FPGA中的SPI与其他模块互动起来

    在上一篇文章<FPGA的SPI从机模块实现>中,已经实现了SPI的从机模块,如何通过SPI总线与FPGA内部其他模块进行通信,是本文的主要讨论内容. 一. 新建FPGA内部DAC控制模块 ...

  8. STL集合容器set按照由小到大或者由大到小的顺序存放元素

    (1)由小到大 set<int,less<int>> M; M.insert(1960); M.insert(1952); M.insert(1771); M.insert(1 ...

  9. 【STL】算法 — partial_sort

    partial_sort接受一个middle迭代器,使序列中的middle-first个最小元素以递增顺序排序.置于[first, middle)内.以下是測试代码: #include <ios ...

  10. .NET MV4 Remote远程验证注意事项及案例

    首先是模型代码 public class LoginModel { [Required] [Display(Name = "用户名")] [Remote("CheckNa ...