`

Android开发——UI组件详解及注册提交表单实现

 
阅读更多

今天讲解的内容是UI组件的TextView组件和EditView组件。

通过今天的作业提现各种组件的用法并介绍通用属性。

作业;

上图为今天的作业,要求用Android实现上述页面布局,不用实现功能。

首先,我写了一下string.xml文件,把所有字符串都写到里面,代码如下:

<?xml version="1.0"encoding="utf-8"?>

<resources>

<stringname="title">杨博的登录作业</string>

<stringname="mail">电子邮件:</string>

<stringname="user">用户名:</string>

<stringname="pass">密码:</string>

<stringname="repass">确认密码:</string>

<stringname="num">验证码:</string>

<stringname="really"><a href="#">看不清?</a></string>

<stringname="again"><a href="#">换一个</a></string>

<stringname="xieyi">我已阅读并同意《凤凰使用协议》</string>

<stringname="sub"><a href="#">提交注册</a></string>

</resources>

写好string.xml文件后,我们需要写布局文件。对于这个提交注册表单,我们需要用到的布局方式不是单一的,而是多种嵌套。因为,如果我们用线性布局,每行或列只能放一个组件,不能满足上图要求。用相对布局显得太繁琐。用表格布局,前四行可以完成,但验证码这一行就有点困难了,所以综述这点,我用了表格布局+相对布局的方式。

布局文件如下:

<?xml version="1.0"encoding="utf-8"?>

<TableLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@drawable/girl"

>

<!-- 电子邮件 -->

<TableRow>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/mail"

android:textSize="20dp"

android:textStyle="bold"/>

 

<EditText

android:layout_width="200dp"

android:layout_height="wrap_content"

android:id="@+id/mail"/>

 

 

</TableRow>

<!-- 用户名 -->

<TableRow>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/user"

android:textSize="20dp"

android:textStyle="bold"/>

 

<EditText

android:layout_width="200dp"

android:layout_height="wrap_content"

android:id="@+id/user"/>

 

</TableRow>

<!-- 密码 -->

<TableRow>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/pass"

android:textSize="20dp"

android:textStyle="bold"/>

 

<EditText

android:layout_width="200dp"

android:layout_height="wrap_content"

android:password="true"

android:id="@+id/pass"/>

 

</TableRow>

<!-- 确认密码 -->

<TableRow>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/repass"

android:textSize="20dp"

android:textStyle="bold"/>

 

<EditText

android:layout_width="200dp"

android:layout_height="wrap_content"

android:password="true"

android:id="@+id/repass"/>

 

</TableRow>

 

 

<RelativeLayout >

<!-- 验证码 -->

<TextView

android:id="@+id/num_tv"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentLeft="true"

android:paddingRight="20dp"

android:paddingTop="15dp"

android:text="@string/num"

android:textSize="20dp"

android:textStyle="bold" />

<!-- 验证码输入框 -->

<EditText

android:id="@+id/num"

android:layout_width="60dp"

android:layout_height="wrap_content"

android:layout_toRightOf="@id/num_tv" >

 

<requestFocus />

</EditText>

<!-- 验证码图片 -->

<TextView

android:id="@+id/pic"

android:layout_width="50dp"

android:layout_height="wrap_content"

android:layout_marginTop="5dp"

android:layout_toRightOf="@id/num"

android:background="@drawable/num" />

<!-- “看不清” -->

<TextView

android:id="@+id/really"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="20dp"

android:layout_toRightOf="@id/pic"

android:text="@string/really"

android:textSize="15dp"

android:textStyle="bold"/>

<!-- “换一个” -->

<TextView

 

android:id="@+id/again"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_marginTop="20dp"

android:text="@string/again"

android:textSize="15dp"

android:textStyle="bold"

android:layout_toRightOf="@id/really" />

<!--协议复选框 -->

<CheckBox

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/xieyi"

android:layout_alignParentBottom="@id/num_tv"

android:gravity="center"

android:id="@+id/xieyi"

android:layout_marginTop="45dp"/>

 

<!--提交注册 -->

<Button

android:layout_width="80dp"

android:layout_height="40dp"

android:text="@string/sub"

android:layout_alignParentBottom="@id/xieyi"

android:gravity="center"

android:layout_marginTop="110dp"

android:textColor="#FFFFFF"

android:background="#FFCC66"

android:layout_marginLeft="120dp"

/>

</RelativeLayout>

</TableLayout>

写布局文件时候,我们可以熟知命名空间是:Android,所以我们必须在每个属性添加前都写上Android。每行都写了一组<TextView>和<EditView>组件,前四行都用标准的表格布局显示。验证码这行用的是线性布局,在插入图片的时候遇到了问题,不过已经解决了,现在总结一下:

插入图片的方法有多种,其中一中是写一个<TextView>组件,然后写定长宽,写一个:Android:background=””这条属性就是定义图片的,或者说是背景图片,我们在双引号中可以加入ID,drawable等等,实现我们想要的效果;

或者是添加一个<imageView>组件,在属性中指定长宽和背景图片即可。

我在调整图片边距的时候遇到了一些问题,说白了还是对以前知识掌握的不够扎实,就是外边距和内边距的区别,事由是这样的:我创建了一个<Button>组件,想让按钮的左边距不为0dp,于是,我就设置了gravity这个属性的Center值,但结果是按钮的文字有了效果,但按钮本身没有变化,最终通过改变margin-left的值解决了这个问题。

还有就是,无论需要改变什么组件的背景图或者插入图片都可以使用通用的属性:Android:background=””,这个属性来实现,本例子中有对屏幕的背景颜色和按钮的背景色做出实例化改变。

最终的实现效果如下:

 

 

分享到:
评论

相关推荐

    安卓Android源码——北京工商大学上网登陆版源码.zip

    6. **UI设计**:使用Android Studio的布局编辑器设计用户界面,可能包括登录表单、错误提示等元素。 7. **异步处理**:为了防止网络操作阻塞主线程,源码可能使用AsyncTask、IntentService或现代的Coroutines、...

    《Android应用开发揭秘》附带光盘代码.

    《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言  第一部分 准备篇  第1章 Android开发简介  1.1 Android基本概念  1.1.1 Android简介  1.1.2 Android的系统构架  1.1.3 ...

    《Android应用开发揭秘》源码

     2.3 创建第一个Android项目——HeUoAndroid  2.3.1 创建HelloAndroid项目  2.3.2 运行HelloAndroid及模拟器的使用  2.3.3 调试HelloAndroid  2.4 小结  第二部分 基础篇  第3章 Android程序设计基础  3.1 ...

    Android应用开发揭秘pdf高清版

    《Android应用开发揭秘》内容全面,不仅详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、Android游戏...

    Android应用开发揭秘

    杨丰盛,Android应用开发先驱,对Android有深入研究,实战经验极其丰富。精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会...

    android开发资料

    这部分内容深入浅出地介绍了Android程序的设计基础,从项目结构到UI设计,再到事件处理机制,帮助读者建立起对Android应用开发的整体认识。 #### 四、用户界面开发 **4.1 用户界面开发详解** - **4.1.1 用户界面...

    h5开发框架MUI

    2. **丰富的组件库**:MUI提供了一系列预设的UI组件,包括导航栏、按钮、列表、表单、弹出层等,开发者可以快速搭建界面,提高开发效率。 3. **高性能**:通过精心优化的JavaScript代码和CSS3动画,MUI确保了在各种...

    Delphi23_FR5212.rar

    《深入探索Delphi 23:FR5212组件详解》 在IT开发领域,Delphi是一款备受赞誉的集成开发环境(IDE),以其高效、快速的编译器和强大的对象 Pascal 语言闻名。当我们提到"Delphi23_FR5212.rar"时,这可能是指一个...

    LastModel1.zip

    《Android Studio实现手机通讯录应用详解》 在Android开发领域,构建一个手机通讯录应用是初学者常遇到的挑战之一。本教程将详细介绍如何利用Android Studio来创建一个具备按首字母排序、动态添加联系人以及显示...

    mui离线文档

    它主要针对Android和iOS平台,提供了一系列原生UI组件,如滑动导航、下拉刷新、侧滑菜单等,同时支持Vue.js进行数据绑定,使得开发者能够快速构建出具有原生体验的移动应用。 二、离线文档的价值 1. 高效查阅:...

    Barcode_for_FireMonkey_3.6_for_DXE2-DXE8_D10-D10.2

    《FireMonkey barcode组件开发详解——基于Delphi的源码解析》 在软件开发领域,条形码技术的应用无处不在,无论是零售业的商品追踪,还是制造业的物流管理,都离不开条形码的支持。而在 Delphi 开发环境中,利用 ...

    ContactList:一个简单的android应用程序,允许用户插入,删除或修改一对姓名和电话号码

    《构建Android应用:ContactList详解》 在移动应用开发领域,Android系统凭借其开源特性,为开发者提供了广阔的空间。本文将深入探讨一个基于Kotlin语言的简单Android应用程序——ContactList,它是一个允许用户...

    手机游戏 j2me

    **手机游戏——J2ME详解** Java 2 Micro Edition(J2ME)是Java平台的一个子集,专门设计用于资源有限的设备,如移动电话、PDA和其他嵌入式系统。在早期智能手机时代,J2ME是开发手机游戏的重要工具,因其跨平台性...

    Android-Banking-Application:Android 应用程序,将手动跟踪各种银行账户中的个人开支。 主要专注于构建数据库后端

    《构建Android银行应用程序:以Java实现的数据库后端详解》 在移动技术日新月异的今天,Android应用已经成为日常生活的重要组成部分,特别是在金融领域。"Android-Banking-Application"项目正是这样一个实例,它是...

    jQuery Mobile中文手册

    ### jQuery Mobile 开发入门手册——知识点详解 #### 概述 jQuery Mobile 是一款基于 jQuery 的移动设备框架,专为智能手机和平板电脑等移动设备设计。它提供了一套完整的 UI 组件,可以快速构建美观且功能丰富的...

    firemonkey_mobile_design_no9.ZIP

    《FireMonkey移动设计详解——基于Delphi的跨平台开发实践》 FireMonkey(FMX)是Embarcadero Delphi和C++Builder中用于构建原生跨平台应用程序的图形用户界面(GUI)框架。这个名为"firemonkey_mobile_design_no9....

    DemoViews-CursoAndroidSENAC:一个演示一些Android Views的简单应用程序

    《Android视图应用详解——基于"DemoViews-CursoAndroidSENAC"项目》 在Android开发领域,视图(Views)是构建用户界面的核心元素,它们负责显示数据并响应用户的交互。"DemoViews-CursoAndroidSENAC"是一个旨在...

    jquery-mobile教程--很好很强大哦

    3. **组件库**:提供了一系列丰富的 UI 组件,如按钮、表单元素、滑动条等,这些组件具有高度可定制性,能够快速构建美观且功能完整的界面。 4. **触摸事件处理**:内置触摸事件处理器,使开发触摸友好的应用变得...

    BlendUI2:混合UI2

    ** BlendUI2: 混合UI2技术详解** BlendUI2是一个专为Web开发者设计的框架,旨在简化Native组件与Web应用之间的交互。通过这个框架,开发人员能够轻松地在Web应用程序中集成原生(Native)功能,提升用户体验,同时...

    react-native-MyAbastecimento:App em React Native com Expo para controle de abastecimentos deveículos

    《React Native与Expo构建车辆补给管理应用——react-native-MyAbastecimento详解》 在当前的移动开发领域,React Native凭借其跨平台的能力和JavaScript的易用性,已经成为许多开发者的选择。本篇文章将深入探讨一...

Global site tag (gtag.js) - Google Analytics