码迷,mamicode.com
首页 > 移动开发 > 详细

Android基础总结(3)

时间:2016-07-22 21:22:18      阅读:299      评论:0      收藏:0      [点我收藏+]

标签:

  

  Android的UI设计有好几种界面程序编写方式。大体上可分为两大类:一类是利用可视化工具来进行,允许你进行拖拽控件来进行布局;还有一类是编写xml文档来进行布局。这两种方法可以相互转换。

1、常见的控件的使用方法

  • TextView
  • Button:一般需要注册监听器来对点击按键的事件做出响应
  • EditText:允许用户在控件里输入和编辑内容,并可以在在程序中对这些内容进行处理。此外,可以使用android:hint属性来指定一段提示性的文本。
  • ImageView:展示图片的一个控件。通过android:src属性来指定图片的位置
  • ProcessBar:用于在界面显示一个进度条(用android:style属性可以设置为圆形或条状),并且可以通过android:visible属性来设置控件的可见性(三种:visible、invisible(控件不可见,但是仍然占用屏幕空间,可以理解为变为了透明状态)、gone(控件不可见,并且不再占用屏幕空间))。
  • AlertDialog:可以在当前界面弹出一个对话框,这个对话框是置顶于所有界面元素之上的,能够屏蔽掉其他控件的交互能力,因此AlertDialog一般用于提示一些非常重要的内容或警告信息,例如一些确认信息等。
  • ProgressDialog:和AlertDialog类似,都可以在界面弹出一个对话框,并且可以屏蔽掉其他界面的交互能力。不同的是,该控件会在对话框中显示一个进度条,一般用于表示比较耗时的当前操作,让用户耐心等待。

2、四种基本布局

LinearLayout

LinearLayout又称作线性布局,是一种非常常用的布局。该布局有一个专属属性android:orientation,这个属性有两个选择vertical和horizontal,代表着线性排列的规律(水平方向还是垂直方向)。

演示:左图是vertical,右图是horizonal

        技术分享          技术分享

  • 如果LinearLayout 的排列方向是 horizontal,内部的控件就绝对不能将宽度指定为match_parent,因为这样的话单独一个控件就会将整个水平方向占满,其他的控件就没有可放置的位置了。
  • 同样的道理,如果LinearLayout 的排列方向是 vertical,内部的控件就不能将高度指定为match_parent。
  • gravity和layout_gravity的区别就是gravity是指当前空间内部的内容的排列方式,而后者则是指当前控件相对于父布局的的排列方式。示例:效果见下图左边的图
     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2 android:layout_width="match_parent"
     3 android:layout_height="match_parent"
     4 android:orientation="horizontal" >
     5 <Button
     6 android:id="@+id/button1"
     7 android:layout_width="wrap_content"
     8 android:layout_height="wrap_content"
     9 android:layout_gravity="top"
    10 android:text="Button 1" />
    11 <Button
    12 android:id="@+id/button2"
    13 android:layout_width="wrap_content"
    14 android:layout_height="wrap_content"
    15 android:layout_gravity="center_vertical"
    16 android:text="Button 2" />
    17 <Button
    18 android:id="@+id/button3"
    19 android:layout_width="wrap_content"
    20 android:layout_height="wrap_content"
    21 android:layout_gravity="bottom"
    22 android:text="Button 3" />
    23 </LinearLayout>

        技术分享            技术分享

  •  android:layout_weight属性是指所设置的控件对剩余空间的权重(权重越大,所占空间越大)。示例:效果见上图右边的图
     1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     2 android:layout_width="match_parent"
     3 android:layout_height="match_parent"
     4 android:orientation="horizontal" >
     5 <EditText
     6 android:id="@+id/input_message"
     7 android:layout_width="0dp"
     8 android:layout_height="wrap_content"
     9 android:layout_weight="1"
    10 android:hint="Type something"
    11 />
    12 <Button
    13 android:id="@+id/send"
    14 android:layout_width="wrap_content"
    15 android:layout_height="wrap_content"
    16 android:text="Send"
    17 />
    18 </LinearLayout> 

 

  注意这里我们将edittext的权重设为1,而width设为0只是一个规范化写法,因为send的width是wrapcontent,所以这一行的剩余空间分到所有权重之和(1)上,1/1即为edittext所占比例。

 

RelativeLayout
  RelativeLayout 又称作相对布局,也是一种非常常用的布局。就和名字一样,这种布局内的控件排列全部按照相对的父布局或其它子控件等的方式进行布局。

相对于父布局:

 

[java] view plain copy
 
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2. android:layout_width="match_parent"  
  3. android:layout_height="match_parent" >  
  4. <Button  
  5. android:id="@+id/button1"  
  6. android:layout_width="wrap_content"  
  7. android:layout_height="wrap_content"  
  8. android:layout_alignParentLeft="true"  
  9. android:layout_alignParentTop="true"  
  10. android:text="Button 1" />  
  11. <Button  
  12. android:id="@+id/button2"  
  13. android:layout_width="wrap_content"  
  14. android:layout_height="wrap_content"  
  15. android:layout_alignParentRight="true"  
  16. android:layout_alignParentTop="true"  
  17. android:text="Button 2" />  
  18. <Button  
  19. android:id="@+id/button3"  
  20. android:layout_width="wrap_content"  
  21. android:layout_height="wrap_content"  
  22. android:layout_centerInParent="true"  
  23. android:text="Button 3" />  
  24. <Button  
  25. android:id="@+id/button4"  
  26. android:layout_width="wrap_content"  
  27. android:layout_height="wrap_content"  
  28. android:layout_alignParentBottom="true"  
  29. android:layout_alignParentLeft="true"  
  30. android:text="Button 4" />  
  31. <Button  
  32. android:id="@+id/button5"  
  33. android:layout_width="wrap_content"  
  34. android:layout_height="wrap_content"  
  35. android:layout_alignParentBottom="true"  
  36. android:layout_alignParentRight="true"  
  37. android:text="Button 5" />  
  38. </RelativeLayout>  

技术分享
相对于子控件:

 

 

[java] view plain copy
 
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2. android:layout_width="match_parent"  
  3. android:layout_height="match_parent" >  
  4. <Button  
  5. android:id="@+id/button3"  
  6. android:layout_width="wrap_content"  
  7. android:layout_height="wrap_content"  
  8. android:layout_centerInParent="true"  
  9. android:text="Button 3" />  
  10. <Button  
  11. android:id="@+id/button1"  
  12. android:layout_width="wrap_content"  
  13. android:layout_height="wrap_content"  
  14. android:layout_above="@id/button3"  
  15. android:layout_toLeftOf="@id/button3"  
  16. android:text="Button 1" />  
  17. <Button  
  18. android:id="@+id/button2"  
  19. android:layout_width="wrap_content"  
  20. android:layout_height="wrap_content"  
  21. android:layout_above="@id/button3"  
  22. android:layout_toRightOf="@id/button3"  
  23. android:text="Button 2" />  
  24. <Button  
  25. android:id="@+id/button4"  
  26. android:layout_width="wrap_content"  
  27. android:layout_height="wrap_content"  
  28. android:layout_below="@id/button3"  
  29. android:layout_toLeftOf="@id/button3"  
  30. android:text="Button 4" />  
  31. <Button  
  32. android:id="@+id/button5"  
  33. android:layout_width="wrap_content"  
  34. android:layout_height="wrap_content"  
  35. android:layout_below="@id/button3"  
  36. android:layout_toRightOf="@id/button3"  
  37. android:text="Button 5" />  
  38. </RelativeLayout>  

技术分享

 

RelativeLayout中还有另外一组相对于控件进行定位的属性,android:layout_alignLeft表示让一个控件的左边缘和另一个控件的左边缘对齐,android:layout_alignRight表示让一个控件的右边缘和另一个控件的右边缘对齐,还有android:layout_alignTop android:layout_
alignBottom

FrameLayout

这种布局没有任何的定位方式,所有的控件都会摆放在布局的左上角,该布局类型主要运用于碎片处理。

 

[java] view plain copy
 
  1. <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2. android:layout_width="match_parent"  
  3. android:layout_height="match_parent"  
  4. >  
  5. <Button  
  6. android:id="@+id/button"  
  7. android:layout_width="wrap_content"  
  8. android:layout_height="wrap_content"  
  9. android:text="Button"  
  10. />  
  11. <ImageView  
  12. android:id="@+id/image_view"  
  13. android:layout_width="wrap_content"  
  14. android:layout_height="wrap_content"  
  15. android:src="@drawable/ic_launcher"  
  16. />  
  17. </FrameLayout>  


技术分享

 

 

 
TableLayout
TableLayout允许我们使用表格的方式来排列控件
设计一个登录界面,允许用户输入账号密码后登录
[java] view plain copy
 
  1. <pre name="code" class="java"><TableLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2. android:layout_width="match_parent"  
  3. android:layout_height="match_parent"   
  4. android:stretchColumns="1">  
  5. <TableRow>  
  6. <TextView  
  7. android:layout_height="wrap_content"  
  8. android:text="Account:" />  
  9. <EditText  
  10. android:id="@+id/account"  
  11. android:layout_height="wrap_content"  
  12. android:hint="Input your account" />  
  13. </TableRow>  
  14. <TableRow>  
  15. <TextView  
  16. android:layout_height="wrap_content"  
  17. android:text="Password:" />  
  18. <EditText  
  19. android:id="@+id/password"  
  20. android:layout_height="wrap_content"  
  21. android:inputType="textPassword" />  
  22. </TableRow>  
  23. <TableRow>  
  24. <Button  
  25. android:id="@+id/login"  
  26. android:layout_height="wrap_content"  
  27. android:layout_span="2"  
  28. android:text="Login" />  
  29. </TableRow>  
  30. </TableLayout>  



技术分享
在TableLayout 中每加入一个 TableRow 就表示在表格中添加了一行,然后在 TableRow中每加入一个控件,就表示在该行中加入了一列,TableRow中的控件是不能指定宽度的。
使用android:layout_span="2"让登录按钮占据两列的空间,android:stretchColumns="1"使得第二个控件自动拉伸并占慢剩余空间。

Android基础总结(3)

标签:

原文地址:http://www.cnblogs.com/mukekeheart/p/5696892.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!