全面总结之 基础控件 篇

上面写了布局,这篇写控件,基本组件就把一些属性列出来就好了,一些复杂组件再写使用方法。

TextView - 文本控件

常用属性:

  • android:autoLink
    控制是否自动查找并转换 URL、邮箱地址等链接为可点击链接.默认值为"none",禁止该属性.

  • android:autoText
    如果设置,这表示该 TextView 的文本输入法可以自动更正常见拼写错误.

  • android:bufferType
    决定 getText() 方法返回值的种类.默认值为 "normal".注意,EditText 和 LogTextBox 总是返回 Editable,及时你指定更低的基本也无济于事.

  • android:capitalize
    如果设置该属性,则指定该 TextView 的文本输入法可以自动改变用户输入的字母为大写.

  • android:cursorVisible
    使光标可见(默认)或隐藏.

  • android:digits
    如果设置,则指定该 TextView 使用数字输入法,只接受指定的字符.

  • android:drawableBottom
    在文本下方显示可绘制对象.

  • android:drawableLeft
    在文本左侧显示可绘制对象.

  • android:drawablePadding
    文本和可绘制对象的间距.

  • android:drawableRight
    在文本右侧显示可绘制对象.

  • android:drawableTop
    在文本上方显示可绘制对象.

  • android:editable
    如果设置,则指定该 TextView 有输入法,如果没有特殊指定,其为文本输入状态.

  • android:editorExtras
    指向 XML 资源,为输入法的特殊实现提供附加数据.只是当输入法启动时将资源 放入
    EditorInfo.extras 字段.

  • android:ellipsize
    该值为真时,如果文字长度超过视图宽度,文字不会在中途被截断, 而是省略其中一部分.为了将文本作为一个整体显示在一行中, 你可能经常使用横向滚动条或者 singleLine 属性, 现在你也可以使用本属性,它还允许多行.

  • android:ems
    使 TextView 精确匹配指定个数的字符宽度.

  • android:freezesText
    如果设置,则文本视图会保持完整的文本内容,以及象当前光标位置这样的附近信息.

  • android:gravity
    指定当显示的文本比视图小时,横向和纵向的对齐方式.

  • android:height
    精确的设置 TextView 的高度.使用布局参数也可以达到相同效果.

  • android:hint
    当文本为空时显示的提示信息.

  • android:imeActionId
    当输入法连接到文本视图时,提供用于 EditorInfo.actionId 的值.

  • android:imeActionLabel
    当输入法连接到文本视图时,提供用于 EditorInfo.actionLabel 的值.

  • android:imeOptions
    附近特性,可用于启动输入法与编辑器的关联,以提高你应用程序的集成效果.

  • android:includeFontPadding
    为上标和下标留出足够的空间,以取代字体上下标.默认为真.

  • android:inputMethod
    如果设置,即指定 TextView 使用指定的输入法(使用完全修饰类名).

  • android:inputType
    文本域中可放置的数据类型,用于帮助输入法决定如何让用户输入文本.

  • android:lineSpacingExtra
    文本行间距.

  • android:lineSpacingMultiplier
    用倍数指定的行间距.

  • android:lines
    使 TextView 精确匹配指定行数的高度.

  • android:linksClickable
    如果设为假,即使指定的 autoLink 属性正确识别出了链接,点击也不会发生任何动作.

  • android:marqueeRepeatLimit
    字幕动画的重复次数.仅应用于启动字母动画的 TextView.

  • android:maxEms
    使 TextView 的最大宽度为指定个数的字符宽度.

  • android:maxHeight
    设置 TextView 的最大高度.

  • android:maxLength
    设置输入过滤器,限制输入的文本最大长度为指定值.

  • android:maxLines
    使 TextView 的最大高度为指定行数的高度.

  • android:maxWidth
    设置 TextView 的最大宽度.

  • android:minEms
    使 TextView 的最小宽度为指定个数的字符宽度.

  • android:minHeight
    设置 TextView 的最小高度.

  • android:minLines
    使 TextView 的最小高度为指定行数的高度.

  • android:minWidth
    设置 TextView 的最小宽度.

  • android:numeric
    如果设置,指定 TextView 使用数值输入法.默认值为假.

  • android:password
    是否将文本域中的字符显示为代表密码的圆点.

  • android:phoneNumber
    如果设置,则指定 TextView 使用电话号码输入法.默认为假.

  • android:privateImeOptions
    附加的内容类型,用于描述文本视图支持的输入法的私有实现.

  • android:scrollHorizontally
    是否允许文本比视图宽(允许横向滚动).

  • android:selectAllOnFocus
    如果文本可选,当该视图得到焦点时将文本全部选中,而不只将光标移动到开始或结尾处.

  • android:shadowColor
    在文本后面显示指定颜色的阴影.

  • android:shadowDx
    阴影横向偏移量.

  • android:shadowDy
    阴影纵向偏移量.

  • android:shadowRadius
    设置阴影的范围.

  • android:singleLine
    限制文本显示与一行中,用横向滚动来代替多行显示.

  • android:text
    用于显示的文本,一定是字符串值,使用‘\;’来转义字符。比如‘\n’或用‘\uxxxx’代表 UNICODE 字符.

  • android:textAllCaps
    全部使用大写字母来呈现文本.

  • android:textAppearance
    基本的文字颜色、字体、大小和风格.

  • android:textColor
    文本颜色,可能是对其它资源的参照,形式为“@[+][package:]type:name” 或“?[package:][type:]name”形式的主题属性.

  • android:textColorHighlight
    选中文本的高亮部分的颜色.

  • android:textColorHint
    提示信息的文字颜色.

  • android:textColorLink
    超链接的文字颜色.

  • android:textIsSelectable
    指示非可编辑文本可以选择.

  • android:textScaleX
    设置文本的横向缩放因子.

  • android:textSize
    文字的大小.推荐以“sp(可缩放像素)”为单位来设置该值(比如 15sp).

  • android:textStyle
    文字风格(粗体、斜体、粗斜体等).

  • android:typeface
    字体名称(楷体、宋体、仿宋、黑体等).

  • android:width
    精确的设置 TextView 的宽度.使用布局参数也可以达到相同效果.


EditText - 输入框

该组件的属性和 TextView 大致相同,最值得注意的是下面这个属性:

  • android:inputType:通过设置该属性,来选择我们输入文字时弹出的键盘样式。有以下值可选,多个属性可以使用 | 连接:
    • text:普通文本
    • textEmailAddress:在普通文本键盘的基础上增加了@符号
    • textUri: 在普通文本键盘的基础上增加”/”符号
    • number:基本的数字键盘
    • phone:电话样式的键盘
    • textCapSentences:普通文本键盘, 每个句子第一个字母大写
    • textCapWords:普通文本键盘, 每个字母都大写, 适用于标题或者人名
    • textAutoCorrect:普通文本键盘, 会自动纠正常见的拼写错误
    • textPassword:普通文本键盘, 但是每个字符会变成点号
    • textMultiLine:普通文本键盘, 但是可以包括换行符

Button 和 ImageButton - 按钮

一般情况下,我们使用 Button 来显示文字按钮,使用 ImageButton 来显示图标。

常用属性:

  • android:clickable:设置按钮是否可点击,有 true | false 可选。

其让属性也和 TextView 差不多,但是有一个方法:android:onClick,需要为该属性指定一个唯一标识符,然后在该组件的宿主 Activity 中创建一个方法名为唯一标识符的方法,在这个方法中处理按钮的点击事件。特别的是这个方法一定要是:

  • 公有 public
  • 返回值为空 void
  • 定义一个view作为唯一的传入参数。(view应该是点击的那个view)

CheckBox 和 RadioButton - 多选和单选

CheckBox 也没啥可讲的,同样也是设置 android:onClick 方法,来监控是否选中。

RadioButton 需要注意一点,同一组选项需要包含在同一个 RadioGroup 当中,然后同样也是设置 android:onClick 方法,来监控是否选中。


ToggleButton - 开关

通过给 ToggleButton 对象设置 setOnCheckedChangeListener 选项来监听开关状态,我们还可以通过调用该对象的 toggle() 方法来设置开关状态,该方法循环调用就是循环开关。


Spinner - 下拉菜单

Spinner 是下拉组件,使用这个组件需要两点:设置数据源和响应用户选择。

设置数据源

Spinner 设置数据源有两种方式:

  • 直接在 XML 文件中通过 adnroid:entries 属性指定,数据源格式如下,例如:

布局文件:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="10dp"
    android:orientation="vertical">

    <Spinner
        android:id="@+id/spinner"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/city" />
</LinearLayout>

数据源 values/spinner-data:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="city">
        <item>北京</item>
        <item>上海</item>
        <item>广州</item>
        <item>深圳</item>
        <item>杭州</item>
    </string-array>
</resources>
  • 在 JAVA 中通过设置 Adapter 的形式设置数据源:
public class MainActivity extends Activity {
    private Spinner spinner;

    private String[] arr = {"西瓜", "橘子", "李子", "水蜜桃"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);

        spinner = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, arr);
        spinner.setAdapter(adapter);
    }
}

响应用户选择

要为 Spinner 定义选择事件处理程序,需要实现 AdapterView.OnItemSelectedListener 接口以及相应的 onItemSelected() 回调方法。

public class MainActivity extends Activity {

    private Spinner spinner;

    private String[] arr = {"西瓜", "橘子", "李子", "水蜜桃"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);

        spinner = (Spinner) findViewById(R.id.spinner);
        ArrayAdapter adapter = ArrayAdapter.createFromResource(this, R.array.city, android.R.layout.simple_spinner_item);
        spinner.setAdapter(adapter);

        spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                Log.d("TTT", "用户选择了 = " + getResources().getStringArray(R.array.city)[position]);
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
            }
        });
    }
}

Adapter

adapter 在 Android 是一个非常重要的概念,它是连接后端数据和前端显式的一个桥梁,是数据和 UI 之间一个重要的纽带,不光在 Spinner 当中,ListView、GridView 中也扮演着十分重要的角色。

Android 当中 Adapter 一览表:

由图可以看到在Android中与Adapter有关的所有接口、类的完整层级图。在我们使用过程中可以根据自己的需求实现接口或者继承类进行一定的扩展。比较常用的有 BaseAdapter,SimpleAdapter,ArrayAdapter,SimpleCursorAdapter 等。

  • BaseAdapter 是一个抽象类,继承它需要实现较多的方法,所以也就具有较高的灵活性;

  • ArrayAdapter 支持泛型操作,最为简单,只能展示一行字。

  • SimpleAdapter 有最好的扩充性,可以自定义出各种效果。

  • SimpleCursorAdapter 可以适用于简单的纯文字型 ListView,它需要 Cursor 的字段和 UI 的 id 对应起来。如需要实现更复杂的UI也可以重写其他方法。可以认为是 SimpleAdapter 对数据库的简单结合,可以方便地把数据库的内容以列表的形式展示出来。

具体使用方法可以看这里:安卓开发Android之Adapter用法总结,这里就不展开讲了。

其他属性

  • android:spinnerMode:该属性用来指定下拉框的弹出形式,有两个值可选:

    • dropdown:下来式。
    • dialog:弹出式。
  • android:prompt:用来指定弹出菜单的 Title,该属性只有在指定 spinnerMode 为 dialog 的时候才起作用。

  • android:dropDownHorizontalOffset:spinnerMode=”dropdown”时,下拉的项目选择窗口在水平方向相对于Spinner窗口的偏移量。

  • android:dropDownVerticalOffset:spinnerMode=”dropdown”时,下拉的项目选择窗口在垂直方向相对于Spinner窗口的偏移量。

  • android:dropDownSelector:用于设定spinnerMode=”dropdown”时列表选择器的显示效果。

  • android:dropDownWidth:在spinnerMode=”dropdown”时,设定下拉框的宽度。

  • android:popupBackground:在spinner=”dropdown”时,使用这个属性来设置下拉列表的背景。

Copyright© 2020-2022 li-xyz 冀ICP备2022001112号-1