Android UI界面

7.1         UI控件

控件公用属性:

UI控件

描述

android:id

用于被Activity引用的id值

android:layout_width/android:layout_height

控件的宽度和高度

android:layout_marginLeft/Right/Top/Bottom

控件距离某个控件的距离

android:gravity

控件中内容的对齐方式

android:layout_gravity

控件本身的对齐方式

android:background

控件背景

android:visible

控件是否可见

android:padding

控件与其他控件的内边框距离

android:weight

控件在父控件中所占的比率

表7.1.1 控件公共属性

      7.1.1 TextView

            用途:显示固定长度的文本字符串或标签

            控件私有属性:

           

UI控件

描述

android:autoLink

设置超链接,可以连接URL、电话、E-mail、map地图

none、web、email、phone、map、all

android:bufferType

getText()取得的文本类型

editable、spannable

android:capitalize

设置英文字母大写类型,前提开启输入法输入

 

android:drawableBottom

值为图片,则在文本框下方输出显示该图片,如果为颜色则作为textView的背景色,此优先级大于background的设置

 

android:drawableLeft/Top/Bottom/Left

在左侧等输出一个图片

 

android:drawablePadding

设置textView与图片的间隔

 

android:ellipsize

当文本过长时的显示方式

start(开头显示省略号)、end(皆为显示省略号)、middle(中间显示省略号)、marquee(跑马灯)

android:gravity

文本的显示位置

center|right|left

android:ems

设置宽度为多少个字符

 

android:height/width

设置文本高度、宽度

 

android:hint

设置提示信息

 

android:maxems

设置最大宽度字符

 

android:minems

设置最短宽度字符

 

android:maxLength

限制输入字符数

 

android:lines

显示的行数

 

android:minLines

最小显示行数

 

android:maxLines

最大显示行数

 

android:lineSpacingExtra

行间距

 

android:lineSpacingMultiplier

设置行间距的倍数

 

android:password

以星号*代替文本输出

 

android:singleLine

设置单行显示

 

android:textAppearance

设置文本外观

 

android:textColor

设置文本颜色

 

android:textHighlight

被选中文字的高亮显示

 

android:textColorHint

设置文字颜色提示信息

 

android:textLinkColor

设置文字连接的颜色

 

android:textScaleX

设置文字间隔

 

android:textSize

设置文字大小

 

android:textStyle

设置文字样式

0(粗体)|1(斜体)|2(又粗又斜)

表7.1.2 TextView私有属性


            使用方式:

                1.  在Android Manifest配置文件中写入TextView的配置。譬如:

<TextView

android:id="@+id/text"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/testWord"

/>

代码片段7.1.1.1 TextView在AndroidManfiest中的写法

注意:如果需要在Activity中调用TextView控件,那么就必须要写它的id值,否则无法查找到该控件。

text的引用可以通过string的资源文件,也可以通过直接以字符串的形式传入。不过Android推荐的是通过string的资源引入,如果强制使用字符串就会出现警告

2.  在Activity中调用

private TextView view;

view = (TextView)this.findViewById(R.id.text);

代码片段7.1.1.2 TextView在Activity中的调用

注意:如果想要修改TextView中的文字的话,就可以用setText()的方法。

           

            创建上下文链接:

这个功能是通过android:autoLink来实现的,它的属性在上面的表中已经给出了。我在这里简单描述下它的各个属性的功能:

1.  none:所有链接无效

2.  web:url链接

3.  phone:电话链接,给出的号码会自动填充到电话界面

4.  map:地图链接,会自动匹配相同的地址

5.  email:电子邮件链接,会打开邮件程序

6.  all:所有上述链接有效

       

       

      7.1.2 EditText

            作用:从用户那里获取数据

            EditText的私有属性:

           

属性

描述

android:numeric

设置输入类型

 

android:autoText

自动拼写,前提是开启输入法

 

android:digitis

设置接受数字的类型

 

android:phoneNumber

输入的为电话号码

 

android:editable

是否可编辑

 

android:freezesText

设置保存文本的内容及光标位置

 

android:inputMethod

为文本指定输入法

 

android:inputType

制定输入类型

 

android:cursorVisible

光标是否可见

true|false

表7.1.3 EditText的私有属性

注释:因为其属性过多,但是TextView中拥有的,EditText都可以拥有,所以,这些属性是基于TextView的属性来说的。

 

            使用方式:

与TextView大同小异,这里不再述说,以后的控件的使用方式也不会再述说。因为控件使用都一样,无法定义xml,之后再在Activity找到控件调用的这种方式。

           

            自动填充:

使用AutoCompleteTextView控件,具体在AutoCompleteTextView中描述。

           

            输入过滤:

this.editText.setFilters(new InputFilter[] {

new InputFilter.AllCaps(),

new InputFilter.LengthFilter(2)

});

代码片段7.1.2.1 过滤器代码

 

      7.1.3 Spinner

            作用:提供可选输入。

            私有属性:

属性

描述

android:dropDownHorizontalOffset

android:dropDownVerticalOffset

下拉的项目窗口相对于Spinner窗口水平、垂直的偏移量

 

android:dropDownSelector

设定列表选择器的效果

 

android:dropDownWidth/Hight

设定下拉框的宽度和高度

 

android:gravity

当前选择项目的对齐方式

top|bottom|left|right|center_vertical|fill_vertical|center_horizontal|center|fill|clip_horizontal|start|end

android:popupBackground

设置下拉背景

 

android:prompt

项目选择对话框的显示提示

 

android:spinnerMode

显示模式

dialog|dropdown

表7.1.4 Spinner私有属性

           

            使用注意点:

              在引入项目的时候,需要预先定义好array类型的String Array  

 

 

           

      7.1.4 按钮、多选框和单选组

            Button作用:提交表单、确认选择之类

            多选框作用:用作多项选择

            单选框作用:用作单选,比如性别选择

           

    这三者的使用方式很简单,而且私有属性基本是共有属性的一些属性,我就不具体说了,上例子:

    Button例子:

<Button

       android:id="@+id/button1"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_alignParentLeft="true"

       android:layout_alignParentTop="true"

android:text="@string/button" /> 

代码片段7.1.4.1 Button例子

 

    CheckBox例子:

<CheckBox

       android:id="@+id/checkBox1"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_above="@+id/radioGroup1"

       android:layout_alignLeft="@+id/radioGroup1"

       android:layout_marginBottom="122dp"

android:text="@string/checkbox" />

代码片段7.1.4.2 CheckBox例子

 

 

    RadioGroup例子:

<RadioGroup

       android:id="@+id/radioGroup1"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_alignParentBottom="true"

       android:layout_alignParentLeft="true">

 

        <RadioButton

           android:id="@+id/radio0"

           android:layout_width="wrap_content"

           android:layout_height="wrap_content"

           android:checked="true"

           android:text="@string/radio1" />

 

        <RadioButton

           android:id="@+id/radio1"

           android:layout_width="wrap_content"

           android:layout_height="wrap_content"

           android:text="@string/radio2" />

 

        <RadioButton

           android:id="@+id/radio2"

           android:layout_width="wrap_content"

           android:layout_height="wrap_content"

           android:text="@string/radio3" />

</RadioGroup>

代码片段7.1.4.3 RadioGroup例子

       

       

      7.1.5 DatePicker、TimePicker

            作用:设置时间日期

            私有属性:

属性

描述

android:calendarViewShown

是否显示日历选择

true|false

android:endYear

最大可选择的年份

 

android:maxDate/minDate

最大、最小显示日期

 

android:spinnerShown

是否显示滚动式选择

 

android:startyear

设置开始年份

 

表7.1.5 DatePicker私有属性

注意:如果不设置calendarViewShown和spinnerShown这两个属性,则两个都会显示,如果屏幕过窄,则会发生两者互相覆盖的情况。

 

另:TimeSpicker则相对简单,只需要直接使用即可,不需要特别设置,如果需要24小时进制显示,则可以利用setIs24Hours()方法来设置。

       

       

       

      7.1.6 ProgressBar

            作用:显示完成度

            私有属性:

属性

描述

style

样式

?android:attr/progressBarStyleLarge

?android:attr/progressBarStyleSmall

?android:attr/progressBarStyleHorizontal

android:max

最大进度

 

android:progress

当前进度

 

android:secondaryProgrss

次要进度

 

android:indeteminate

设置不确定模式,前提:水平进度条

 

表7.1.6 ProgressBar私有属性

            注释:ProgressBar也可以通过调用系统在标题栏上显示进度。用法如下:

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

requestWindowFeature(Window.FEATURE_PROGRESS);

代码片段7.1.6.1ProgressBar系统进度条

 

 

     7.2         对话框

对话框有一下几种:

对话框

描述

Dialog

所有Dialog的基类

AlertDialog

警告对话框,通过构造函数可以构建一个、二个或者三个按钮的对话框

CharacterPickerDialog

用于简单显示字符或这选择的对话框

DatePickerDialog

日期选择对话框

ProgressDialog

显示模糊或非模糊进度条的对话框

TimePickerDialog

时间选择对话框

 表7.1.6 对话框类型

注释:这些都是现成的对话框,如果上述的满足不了要求,也可以通过继承Dialog来自己定义自己的对话框。

 

      7.2.1 对话框的生命周期

    Activity在启动一次对话框后,可能之后会重复使用。

    Android构建Dialog的步骤如下:

    1.  定义对话框

注释:定义一个唯一标识来标识这个Dialog,并且通过这个id来查找Dialog池,返回查找到的Dialog。如果没有查找到,那么就会创建这个新的对话框。

            2.  初始化对话框

因为Dialog对象被Activity保存在Dialog对象池中,所以有必要每次在调用的时候重新初始化,为了这个,必须重写onPrepareDialog()方法。

            3.  启动对话框

Activity通过调用showDialog(int id)的方法来显示一个对话框,这个时候可以把Dialog的唯一标识传入,来进行显示。

            4.  关闭对话框

Activity会自动将对话框解散(dismiss),回收到Dialog池中,但不会移除。想要手动解散可以用dismissDialog()方法,前提传入Dialog的ID。如果想要将它永久移除,则可以用removeDialog()方法。

            5.  关闭Activity

                关闭Activity后,Dialog池消失,自然Dialog永久消除。

           

           

     7.3         自定义对话框

        自定义Dialog大致分为下面几个步骤:

        1.  设计Dialog的布局文件

        2.  定义一个继承Dialog的自定义对话框类

        3.  在主Activity中声明该类,并且show,即可。

        以下上代码:

        dialog.xml:

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

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="300dp"

    android:layout_height="100dp"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".MainActivity" >

 

    <Button

       android:id="@+id/confirm"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_alignParentLeft="true"

       android:layout_centerVertical="true"

       android:text="@string/confirm" />

 

    <Button

       android:id="@+id/cancel"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content"

       android:layout_alignBaseline="@+id/confirm"

       android:layout_alignBottom="@+id/confirm"

       android:layout_alignParentRight="true"

       android:text="@string/cancel" />

 

</RelativeLayout>

代码片段7.3.1

 

        MyDialog.java:

package com.example.dialog;

 

import android.app.Dialog;

import android.content.Context;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

 

import com.example.androidstudy_dialog.R;

 

public class MyDialog extends Dialog {

 

   private Button confirm;

   private Button cancel;

   private ButtonListener listener;

   private String title;

 

   public MyDialog(Context context) {

      super(context);

      this.title = "dialog";

   }

  

   public MyDialog(Context context, String title){

      this(context);

      this.title = title;

   }

 

   @Override

   protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.dialog);

      setTitle(title);

 

      this.confirm = (Button) this.findViewById(R.id.confirm);

      this.cancel = (Button) this.findViewById(R.id.cancel);

      this.listener = new ButtonListener();

 

      this.confirm.setOnClickListener(this.listener);

      this.cancel.setOnClickListener(this.listener);

   }

 

   private class ButtonListener implementsandroid.view.View.OnClickListener {

 

      @Override

      public void onClick(View view) {

         if (view.getId() == R.id.confirm) {

            dismiss();

         } else if (view.getId() == R.id.cancel) {

            dismiss();

         }

      }

 

   }

 

}

代码片段7.3.2

 

        MyActivity.java

package com.example.androidstudy_dialog;

 

import com.example.dialog.MyDialog;

 

import android.os.Bundle;

import android.app.Activity;

import android.app.Dialog;

import android.view.Menu;

 

public class MainActivity extends Activity {

  

   private Dialog dialog ;

  

   @Override

   protected void onCreate(Bundle savedInstanceState) {

      super.onCreate(savedInstanceState);

      setContentView(R.layout.activity_main);

     

      this.dialog = new MyDialog(this);

      this.dialog.show();

   }

  

   @Override

   public boolean onCreateOptionsMenu(Menu menu) {

      getMenuInflater().inflate(R.menu.main, menu);

      return true;

   }

 

}

代码片段7.3.3

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值