安卓之旅--构建一个简单的用户界面

<span style="font-size:14px;">
</span>

      Android 应用通过 View 类和 ViewGroup 类层级结构来构建用户界面,比如 Button 或者 text fileds 等平

常的View对象组件,ViewGroup对象是包含定义的子视图的不可见的视图容器,如网格或者垂直列表。

      Android提供了xml语法和相应的View和ViewGroup子类,你可以在XML中定义UI使用UI元素的层级结构。


 创建一个线性布局

    在你的项目下打开res/layout/目录,在这个目录创建main.xml文件。

    在默认的Activity模板类下,布局文件包含有RelativeLayout 根布局和 TextView 子布局。
    
    首先,删掉TextView节点,然后将 RelativeLayout 改成LinearLayout,然后添加android:orientation="horizontal" 属性,结果如下显示:
 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" >
</LinearLayout>

        LinearLayout是一个视图组(ViewGroup的子类),列出子视图在垂直或者水平方向上,通过设置android:orientation这个特殊的属性。LinearLayout的每一个子视图按照在XML文件中的次序显示在屏幕上。

   另外两个属性: android:layout_width 和android:layout_height,所有的视图都需要指定它们的大小。
 
   因为LinearLayout在布局中是根视图,可以设定它的宽和高为"match_parent"铺满整个界面,这个值指明了这个视图能够扩展它的宽和高能匹配它的父布局的宽和高。
    

  添加一个文本域


    创建一个用户可编辑的文本域,在LinearLayout中添加一个EditText子元素。
   
   像所有的View对象,你必须定义确定的XML属性指定EditText对象的内容。下面是你怎样在LinearLayout节点中声明它:

  <EditText android:id="@+id/edit_message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:hint="@string/edit_message" />

  关于这些属性:

    android:id
      提供视图的惟一标识,在你的代码中可以使用它引用对象,如果获取这个对象然后操作。
      当你在XML文件中指向某个资源对象需要使用@符号,后面跟着资源类型(这里是id),然后是斜杠,然后是资源名称(edit_message)
      资源类型前面的加号(+)只在你第一次定义这个资源ID时需要,编译程序时,SDK工具使用这个ID名称创建一个新的资源ID,在你的项目下gen/R.java文件中指向EditText元素。这个资源ID只需要这样定义一次,其他引用此ID就不再需要使用加号。使用加工只是在你指定一个新的资源ID时而且不是具体的资源如字符串、布局等等。

    android:layout_width 和android:layout_height
       "wrap_content"值指明这个视图仅仅需要和这个视图中的内容相匹配,而不是用特定大小的宽和高。如果你是使用"match_parent",这个EditText元素去填满整个屏幕,因为它会适配它的父布局LinearLayout。

   
      android:hint
         当这个文本域为空的时候默认显示的字符串。"@string/edit_message" 值指向另一个分离的文件中定义的字符串资源,而不使用硬编码的方式指定值。因为这是指向一个具体的资源(并不是标识),所以不需要使用加号。不管怎样,如果你尚未定义出字符串资源,你会看到编译错误。


   添加字符串资源


     当你在用户界面需要添加文本时,你可能会指定每个字符串作为资源。字符串资源允许你在一个地方管理所有的UI上的文本,这样你会很方便地查找和更新这些文本。外部化字符串还允许您通过提供替代应用程序本地化为不同的语言定义为每个字符串资源。
     通常,你的安卓项目在res/values/string.xml包含一个字符串资源,添加一个新字符串名称"edit_message",然后设置它的值为"Enter a  Message"。
    
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="app_name">My First App</string>
    <string name="edit_message">Enter a message</string>
    <string name="button_send">Send</string>
    <string name="action_settings">Settings</string>
    <string name="title_activity_main">MainActivity</string>
</resources>


    添加一个按钮(Button)


     现在添加一个<Button>在布局中,直接放在<EditText>下面。

   
  <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/button_send" />

   Button的宽和高都设置成"wrap_content",因为这个Button只会与按钮上的文本一样大,这里没有使用android:id的属性,是因为这里不会在Activity中通过代码引用它。

  

     使输入框填满屏幕的宽度


    布局当前的设计只让EditText和Button仅仅和它们的内容一样大,见下图:
    
       EditText和Button的宽度设置为"wrap_content"


   Button显示很好,但却不适合EditText,因为用户可能输入很多东西,它很好填充未使用的屏幕宽度。你可以指定android:layout_weight属性,在LinearLayout中使用权重来实现。

    权重是一个数值,指定数量的剩余空间会被消耗,相对于其他兄弟组件消耗的空间。 这有点像在饮料配方的成分:“伏特加2部分,一份咖啡利口酒”意味着三分之二的喝伏特加。举个例子,如果你给一个视图的重量2和另一个的重量之和是3,所以第一个观点充满2/3的剩余空间,第二种观点充满休息。如果您添加第三个视图,并给它一个重量,然后第一个视图(2)的重量现在剩下的半空间,而剩下的两个每一个1/4。
      所有视图的默认重量为0,所以如果你指定任何重量值大于0,只有一个观点,然后这一观点充满后所剩空间所有视图给出了它们需要的空间。所以,填补剩余的空间在你的布局与EditText元素,给它一个重量的1和离开按钮没有重量。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值