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. Java程序读取tomcat下的properties配置文件

    代码如下: //找到tomcat/etc/wx文件夹    private static String getPropFolderPath()    {  /* Properties p = Syst ...

  2. tomcat组成及原理[转]

    Tomcat安装好后打开目录;可以看到如下结构: bin :存放服务器脚本; conf :存放配置文件; lib :存放需要的JAR文件; wabapps :存放需要发布的Web应用程序及其部署文件; ...

  3. FullScreenFragment Code

    package com.dexode.fragment; import android.annotation.TargetApi; import android.app.Activity; impor ...

  4. Ajax 用法, 实现方法,JS原生与JQ实现

    AJAX 详解 ajax是实现页面异步加载. 常用于, 前后端数据交互, 实现前端页面无刷新更改操作. 是web前端和后端使用者开发的必备使用技能~~ Ajax操作~   :  俗话原理 : 用俗话来 ...

  5. KVO的实现原理探寻

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  6. MySQL_数据分页查询(limit用法)

    取前5条数据 select * from table_name limit 0,5 或 select * from table_name limit 5 取第11条到第15条数据,共5条 select ...

  7. axis2之webservice

    Axis2之webservice超详细教程 Axis2是一套崭新的WebService引擎,该版本是对Axis1.x重新设计的产物.Axis2不仅支持SOAP1.1和SOAP1.2,还集成了非常流行的 ...

  8. ssh伪登陆执行远程主机脚本命令 C程序基于ssh passwordless执行远程主机命令及基于配置文件的验证伪登陆执行命令

    1,基于有密码及免秘钥在远程主机上执行命令及脚本 ssh -T ip "CLI or shell.sh"; 2,C程序实现上述功能--基于password-less

  9. 借贷宝推广得现金是真的_注册就送人民币20元_邀请码CRJYQTK

    动动手指,20元立即到手.即优步uber打车和滴滴专车豪投数亿元争夺专车市场之后,一款名为借贷宝的APP推广在网上流传开来,目前主要看重的就是它的推广力度,豪投20亿让大众来推广.简单流程:下载借贷宝 ...

  10. 关于CoreData的理解和使用.

    CoreData是苹果官方推出的一种方便的面向对象的存储方式,相信大家都已经对其有所了解,但是对于CoreData的概念大家都存在部分的误区.给大家推荐个网址是苹果的官方文档的翻译版(http://o ...