Android的输入控件:

输入控件指的是Android通过界面与用户交互的组件. Android提供了多种输入控件, 比如Button, text field, seek bar, check box, zoom button, toggle button等.

android 输入 范围限制 android用于输入文本的控件_Android

向UI中添加一个输入控件十分的简单, 与向XML文件中添加普通的标签一样, 比如这是一个包含一个text field和一个button的layout文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="fill_parent"
     android:layout_height="fill_parent"
     android:orientation="horizontal">
     <EditText android:id="@+id/edit_message"
         android:layout_weight="1"
         android:layout_width="0dp"
         android:layout_height="wrap_content"
         android:hint="@string/edit_message" />
     <Button android:id="@+id/button_send"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="@string/button_send"
         android:onClick="sendMessage" />
</LinearLayout>


每种输入控件都可以响应若干输入事件, 我们可以通过处理这些事件来响应用户的操作, 比如当用户输入一串字符串或者点击一个button的时候.

 

普通控件:

这里有一个简单的列表, 列出了Android常用的一些控件, 除了表中列出的以外Android还有很多控件, 详情可以参考这里.

控件类型

描述

相关类

Button

一个可以按下的按钮. 可以帮助用户处理指定操作.

Button

Text field

一个可编辑的文本域. 我们可以使用AutoCompleteTextView类来创建一个可以提供自动完成功能的文本域.

EditText

AutoCompleteTextView

Check box

一个可供用户选择的选择框. 可以为用户提供一组不互斥的选择项. 就是多选框.

CheckBox

Radio button

跟checkbox相似, 但是只能选择一个, 就是单选框.

RadioGroup

RadioButton

Toggle button

一个开关.

ToggleButton

Spinner

一个下拉列表, 允许用户选择一组数值中的一个.

Spinner

Picker

让用户可以通过滑动或者上下按键从一组数据中选择一个值. 使用DatePicker可以选择日期(哪年哪月), TimePicker则可以选择时间(几点几分).

DatePicker

TimePicker

 

Button:

一个按钮可以包含文本和图标, 当用户点击它的时候出发一个事件.

android 输入 范围限制 android用于输入文本的控件_android_02

根据按钮是否包含图片和文字, 我们有三种创建按钮的方法:

只有文本, 我们可以使用Button类:


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


只有图标, 我们可以使用ImageButton类:


<ImageButton
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:src="@drawable/button_icon"
     ... />


如果希望既有文本又有图标, 那么可以使用Button类, 并指定一个android:drawableLeft属性:


<Button
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/button_text"
     android:drawableLeft="@drawable/button_icon"
     ... />


 

响应点击事件:

当用户点击Button的时候, Button对象会收到一个on-click事件. 通过为<Button>的android:onClick属性, 我们可以为Button指定一个处理事件的方法. 该属性的值必须是一个方法的名字, 然后拥有这个layout的Activity必须实现这个方法. 比如这是一个XML文件:


<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
     android:id="@+id/button_send"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/button_send"
     android:onClick="sendMessage" />


它指定了Button的点击事件的处理方法, 是一个名为sendMessage的方法, 那么在使用这个layout的Activity中就必须实现这个方法:


/** Called when the user touches thebutton */
public void sendMessage(View view) {
     // Do something in response to button click
}


该方法必须满足以下条件:

名字必须跟XML中定义的onClick属性一样.

必须为public方法

必须返回void

必须有并且只有一个View参数, 用于接收被点击的View.

 

使用OnClickListener:

我们也可以为Button指定一个监听事件Handler来处理点击事件, 而不是在XML中声明. 如果我们在运行时实例化Button或者需要在一个Fragment中处理点击事件, 那么就需要用到这种方法. 两步:

1.      创建一个View.onClickListener对象.

2.      通过button的setOnClickListener(View.onClickListener)绑定监听对象.

栗子:


Button button  = (Button) findViewById(R.id.button_send);
 button.setOnClickListener(new View.OnClickListener() {
     public void onClick(View v) {
         // Do something in response to button click
     }
});


 

为按钮添加样式:

同一个按钮的长相(背景图片和字体)在不同设备上可能会因为默认的主题不同而有所不同. 我们可以通过主题来确保整个APP的控件风格一致. 比我们可以在manifest.xml的<application>标签下指定”android:theme="@android:style/Theme.Holo", 来指定一个主题.

为了使每个Button都拥有独特的背景, 可以设置”android:background”属性, 它需要接收一个drawable资源或者颜色资源. 或者可以为一个按钮指定某个样式, 比如背景色, 字体, 大小等.

 

无边框按钮:

有时候可能会希望按钮没有边框. 功能上跟其它按钮无差, 只是没有边框. 我们需要borderlessButtonStyle样式来指定一个无边框的按钮, 栗子:


<Button
     android:id="@+id/button_send"
     android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:text="@string/button_send"
     android:onClick="sendMessage"
     style="?android:attr/borderlessButtonStyle" />


 

自定义背景:

除了自定义样式, 我们还可以为Button自定义背景, 这样可以使我们的Button更加的与众不同. 不止可以指定一个图片或者背景色, 我们还可以指定按钮在不同状态下的背景. 我们可以定义一个XML文件以指定不同状态下按钮的背景图片和颜色. 步骤如下:

1.      创建三个bitmap图片, 分别对应默认状态, 按下状态, 获得焦点状态. 为了保证图片可以适合button的不同尺寸, 请使用Nine-patch格式.

2.      将图片放入/res/drawable目录下, 文件名最好与状态相对应, 比如: button_default.9.png, button_pressed.9.png, 和button_focused.9.png.

3.      在/res/drawable下创建一个XML文件(比如名字叫button_custom.xml), 插入下列XML代码:


<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:drawable="@drawable/button_pressed"
           android:state_pressed="true" />
     <item android:drawable="@drawable/button_focused"
           android:state_focused="true" />
     <item android:drawable="@drawable/button_default" />
</selector>


该文件定义了一个可以自动根据状态改变而改变图片的drawable资源. 而且<item>的排列顺序很重要, 最后一个是default, 只有在state_pressed和state_focused都为false的时候才会使用default. 这个XML文件此时代表一个单独的drawable资源, 但是它会根据状态不同而变化.

4.      然后将Button的背景设置为这个XML资源文件即可:


<Button
    android:id="@+id/button_send"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/button_send"
    android:onClick="sendMessage"
    android:background="@drawable/button_custom"  />

 

参考: http://developer.android.com/guide/topics/ui/controls/button.html

http://developer.android.com/guide/topics/ui/controls.html