第一个Activety添加控件
来源:互联网 发布:广州艺知艺术培训学校 编辑:程序博客网 时间:2024/05/13 04:33
接上一篇博文,今天玩添加一个标题,添加一个输入框用于输入服务器IP地址,一个按钮,用于保存IP地址并登录服务器。
今天这篇博文可能会有点长,要讲解的东西比较多,耐心看。
安卓工程的项目结构就不多说了,基本能控制的就那么几个文件,要添加标题,就先打开布局文件。这个项目的第一Activety的标题很简单,就一行文字而已,打开activity_main.xml这个布局文件,我们需要在页面的顶部弄个标题,你可以在Design状态拖一个TextView过去,不过我更习惯直接写,因为修改参数还是得回到Text状态。
OK,只要在RelativeLayout里面写入如下代码就可以自动生成一个TextView了,注意写入的位置,在tools:context=".MainActivity">后面,</RelativeLayout>前面,这是标准的XML文件结构,表示这是一个单独的节点。
<TextView
android:id="@+id/title"
android:layout_width="fill_parent"
android:layout_height="30sp"
android:text="Landscape 会议文件分发系统"
android:textSize="15sp"
android:gravity="center"
android:textColor="#00F"
android:shadowColor="#000"
android:shadowDx="3"
android:shadowDy="3"
android:shadowRadius="3"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:background="@drawable/title_bg"/>
这里讲解一下TextView样式参数的含义,必须以android:开头,表示是继承于android系统。
layout_width和layout_height分布是控件的宽度和高度,这里宽度是全屏宽度,高度是40SP,SP是google公司为了适应安卓系统乌七八糟的分辨率定义的一个像素单位,具体转换值可以去百度,反正我们只是显示个标题而已,大致差不多就可以了。
text是控件需要显示的文字内容
id是控件的id,必须@+id/开头,后面才是真正的id,这点与VS编程很不同,被它搞残了很多次。观念转换不过来。
gravity是文字的对齐方式
textSize是文字大小,SP就不多讲了。
shadowColor是文字阴影的颜色,不要也无所谓,纯粹是为了好看点而已,大家也不要批判我的审美观了,我一向是实用主义者,要是让我自己用的app,我是不会加阴影的,耗资源嘛。
shadowDx是阴影横向偏移量
shadowDy是阴影纵向偏移量
shadowRadius是阴影大小
以上三个参数根据自己喜好填,注意不要超出控件范围,否则会不可见的。
textColor是文字颜色,
layout_alignParentTop将控件的上边缘和父控件的上边缘对齐。
layout_centerHorizontal将控件置于水平方向的中心位置
以上两个参数有点特殊,这个是针对layout的,而不是针对TextView,但TextView是在layout里面,所以要定好它的位置。
background控件背景设置,这个就需要讲得多了,也是最难学的一部分。我这里用了@drawable/title_bg这个参数,意思就是控件背景有单独的style设置,这个设置是一个单独样式表文件,存放在drawable文件夹里,名字叫title_bg,注意,是没有xml这个扩展名的,虽然它是一个xml文件。下面我们讲讲这个title_bg.xml文件。
文件可以用另外的软件建立,如记事本什么的,但注意保持的格式,要保存成纯文本格式,而且要utf-8编码,否则会出错,尤其是里面注释有中文的情况下。
首先,不要尝试在IDE里面新建XML文件,这个傻乎乎的IDE只要新建xml文件都会给保存在values文件夹里面,一般我都是在外面用记事本写的,推荐使用Notepad++。
代码在下面提供,写好的title_bg.xml,拷贝到项目里面的app->src->main->res->drawable文件夹里,稍等几秒钟,IDE就会同步更新显示出文件来的。有点需要注意的,文件名最好用小写,尤其是不能用大写字母开头,否则会编译错误的。
title_bg.xml的代码如下
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 连框颜色值 --><item>
<shape>
<solid android:color="#22666666" />
</shape>
</item>
<!-- 主体背景颜色值 -->
<item
android:bottom="1dp"
android:right="1dp"
android:top="1dp"
android:left="1dp">
<shape>
<gradient
android:startColor="#39BFE4"
android:centerColor="#058BB0"
android:endColor="#39BFE4"
android:type="linear"
android:angle="90"
android:centerX="0.5"
android:centerY="0.5" />
<padding
android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp" />
</shape>
</item>
</layer-list>
其实就是一个画画的xml文档,改说明的我都注释了,应该能看得懂。不懂就不停改相关参数,编译看效果。
好,标题栏就算完成了,编译看看效果,再继续添加控件,方法都是一样的,代码如下
先在主布局里面再嵌套一个RelativeLayout布局,用于显示除标题外的其余控件
嵌套的RelativeLayout主体布局代码
<RelativeLayout
android:id="@+id/info_div"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="15dip"
android:layout_margin="15dip"
android:background="@drawable/background_div_bg"
>
background_div_bg在后面单独提供,后面涉及到样式表文件也是如此。
嵌套的RelativeLayout收尾代码
</RelativeLayout>
在嵌套的RelativeLayout里面继续添加控件
提示输入IP地址的TextView
<TextView
android:id="@+id/iptext"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginTop="5dp"
android:text="请输入会议服务器IP地址"
style="@style/normalText"/>
输入框的代码
<EditText
android:id="@+id/ipedit"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/iptext"
android:singleLine="true"
android:background="@drawable/shape"
android:inputType="number|textCapCharacters"/>
这里要说明一下,inputType用这个参数表示验证输入,只能输入数字和字符,获取焦点会自动打开输入法,而且是数字的输入法,不会是全键盘或其余什么的。
确定按钮的代码
<Button
android:id="@+id/savelogin"
android:layout_width="wrap_content"
android:layout_height="32sp"
android:text="确 定"
android:textSize="16sp"
android:layout_centerHorizontal="true"
android:layout_below="@+id/ipedit"
android:layout_marginTop="15dp"
android:background="@drawable/buttonshape"
android:onClick="SaveLogin"
/>
这里要讲一下onClick这个属性,这是响应按钮的单击函数,响应按钮单击事件,一般有两种方法,一种是监听单击事件,检测是不是指定ID的控件在单击,如果是则进行处理,另外一种就是指定处理函数,我习惯用第二种,方便维护代码,这是从c#转行过来的习惯,看各人喜好的。
再玩个版权声明的TextView,在嵌套的RelativeLayout外,主RelativeLayout内输入以下代码
<TextView
android:id="@+id/copyright"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text=""
android:gravity="right"/>
注意看,这里的text是空的,是我用来玩一个小技巧用的,到讲JAVA程序的时候回单独讲的。
background.xml代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<gradient
android:startColor="#FFACDAE5"
android:endColor="#FF72CAE1"
android:angle="45"
/>
</shape>
background_div_bg.xml代码
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#55FFFFFF" />
<corners
android:topLeftRadius="10dp"
android:topRightRadius="10dp"
android:bottomRightRadius="10dp"
android:bottomLeftRadius="10dp"/>
</shape>
buttonshape.xml代码
<?xml version="1.0" encoding="UTF-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- 连框颜色值 --><item>
<shape>
<solid android:color="#0000FF" />
<corners android:radius="6dp" />
</shape>
</item>
<!-- 主体背景颜色值 -->
<item
android:bottom="1dp"
android:right="1dp"
android:top="1dp"
android:left="1dp">
<shape>
<gradient
android:startColor="#39BFE4"
android:centerColor="#058BB0"
android:endColor="#39BFE4"
android:type="linear"
android:angle="90"
android:centerX="0.5"
android:centerY="0.5" />
<padding
android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp" />
<!-- 应该是圆角 -->
<corners android:radius="6dp" />
</shape>
</item>
</layer-list>
shape.xml的代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#0033FFFF"/>
<corners android:radius="8px"/>
<stroke android:color="#0033FF"
android:width="2px"
/>
</shape>
布局代码基本就这样,明天讲讲如何编写JAVA代码,响应控件。
- 第一个Activety添加控件
- 第一个Activety控件的响应
- 项目第一个安卓APP之第一个Activety
- 第二个Activety和webview
- 第二个Activety中webview响应代码
- 第一个Android驱动添加
- vc2013控件第一个程序
- 第一个项目(七)添加地图
- 添加你的第一个页面
- Siow写的第一个控件
- 我自己写的第一个控件
- 创建的第一个Listbox 控件
- Telerik控件入门 第一个Button
- 用swift创建第一个控件UILabel
- 自定义控件2.第一个自定义view
- LinearLayout建立多个控件却只显示第一个
- 时间控件 第一个不能小于第二个
- 一次添加N个用户控件
- GeoHash简单理解
- Java toString()方法妙用
- JVM内存区域模型
- 网络语音技术
- Knockout应用开发指南 第七章:Mapping插件
- 第一个Activety添加控件
- ant
- 使用xig工具从schema生成schema实例
- 使用jprobe构建镜像协议栈的原理与感悟
- 局部变量,全局变量,静态全局变量
- [leetcode]50 Count and Say
- Android 5.1升级概要
- 1561: (More) Multiplication
- VS在查找预编译头使用时跳过解决