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. (jQuery||Zepto).extend 的一个小问题

    最近一直在搞移动端,也由于自己对jQuery比较熟悉,再加上Zepto提供了跟jQuery一样的API,所以就选择了Zepto作为开发框架. 由于是移动端开发,所以也应用了一些ES5新增的API,比如 ...

  2. TextArea里Placeholder换行问题

    页面上使用TextArea控件时,会时不时的想给个提示,比如按照一定方式操作之类的.正常情况下,会使用Placeholder,但这样的提示是不会换行的,无论是用\r\n,还是用<br/>, ...

  3. 变形课hd1181(DFS)

    变形课 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/65536 K (Java/Others)Total Submis ...

  4. 正式学习React (七) react-router 源码分析

    学习react已经有10来天了,对于react redux react-redux 的使用流程和原理,也已经有一定的了解,在我上一篇的实战项目里,我用到了react-route,其实对它还只是 停留在 ...

  5. nginx请求体读取(二)

    2,丢弃请求体 一个模块想要主动的丢弃客户端发过的请求体,可以调用nginx核心提供的ngx_http_discard_request_body()接口,主动丢弃的原因可能有很多种,如模块的业务逻辑压 ...

  6. javascript事件设计模式

    JavaScript事件设计模式 http://plkong.iteye.com/blog/213543 http://www.docin.com/p-696665922.html

  7. accel-pptp 部署

    accel-pptp 是 pptp-client 和 pptpd 的改进版,使用内核 pptp 模块,相比 raw socket 实现方式能提供更好的性能.   Ubuntu 12.04 上启用内核 ...

  8. Google map v3 using simple tool file google.map.util.js v 1.1

    /** * GOOGLE地图开发使用工具 * @author BOONYACHENGDU@GMAIL.COM * @date 2013-08-23 * @notice 地图容器的z-index不能小于 ...

  9. 轻松配置java开发环境

    1.下载java开发常用的IDE(Integrated Development Environment)--eclipse.http://www.eclipse.org/downloads/ 2.下载 ...

  10. Android4.0中蓝牙适配器state machine(状态机)的分析

    今天晓东和大家来一起看一下Android4.0中蓝牙适配器(Bluetooth Adapter)的状态机变化的过程.首先,我们需要了解一下,蓝牙适配器究竟有哪些状态,从代码可以清晰地看到(framew ...