android学习-AutoCompleteTextView,MultiAutoCompleteTextView

本文主要是介绍android学习-AutoCompleteTextView,MultiAutoCompleteTextView,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  •  自动完成输入框 AutoCompleteTextView
  •  多内容自动完成输入框

 

19. AutoCompleteTextView 自动完成输入框

 

智能输入框 AutoCompleteTextView   

   1. 简介

   一个可编辑的文本视图显示自动完成建议当用户键入。建议列表显示在一个下拉菜单,用户可以从中选择一项,以完成输入。建议列表是从一个数据适配器获取的数据。

 2. 重要方法

      clearListSelection():清除选中的列表项

      dismissDropDown():如果存在关闭下拉菜单

      getAdapter():获取适配器

 

示例代码

① 新建工程
② 修改main.xml 布局,添加一个TextView、一个AutoCompleteTextView、一个Button

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
    android:id="@+id/widget0"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="http://schemas.android.com/apk/res/android" >

<TextView
    android:id="@+id/TextView_InputShow"
    android:layout_width="228px"
    android:layout_height="47px"
    android:text="请输入"
    android:textSize="25px"
    android:layout_x="42px"
    android:layout_y="37px"
> </TextView>
<AutoCompleteTextView
    android:id="@+id/AutoCompleteTextView_input"
    android:layout_width="275px"
    android:layout_height="wrap_content"
    android:text=""
    android:textSize="18sp"
    android:layout_x="23px"
    android:layout_y="98px"
> </AutoCompleteTextView>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_x="127dip"
    android:text="清空"
    android:id="@+id/Button_clean"
    android:layout_y="150dip">
</Button>
</AbsoluteLayout>

 

③ 修改mainActivity.java,添加自动完成功能

package zyf.Ex_Ctrl_13ME;
//导入使用的包
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.TextView;

public class Ex_Ctrl_13ME extends Activity {
    // Called when the activity is first created. 
    //定义要使用的类对象
    private String[] normalString =new String[] {
            "Android", "Android Blog","Android Market", "Android SDK",
            "Android AVD","BlackBerry","BlackBerry JDE", "Symbian",
            "Symbian Carbide", "Java 2ME","Java FX", "Java 2EE",
            "Java 2SE", "Mobile", "Motorola", "Nokia", "Sun",
            "Nokia Symbian", "Nokia forum", "WindowsMobile", "Broncho",
            "Windows XP", "Google", "Google Android ", "Google 浏览器",
            "IBM", "MicroSoft", "Java", "C++", "C", "C#", "J#", "VB" };
    @SuppressWarnings("unused")
    private TextView show;
    private AutoCompleteTextView autoTextView;
    private Button clean;
    private ArrayAdapter<String> arrayAdapter;
   

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //装入主屏布局main.xml
        setContentView(R.layout.main);
        //从XML中获取UI元素对象
        show = (TextView) findViewById(R.id.TextView_InputShow );
        autoTextView =(AutoCompleteTextView) findViewById(R.id.AutoCompleteTextView_input );
        clean = (Button) findViewById(R.id.Button_clean);
       

        //实现一个适配器对象,用来给自动完成输入框添加自动装入的内容
        arrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line , normalString);
        //给自动完成输入框添加内容适配器
        autoTextView.setAdapter(arrayAdapter);
      

        //给清空按钮添加点击事件处理监听器

        clean.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                //清空
                autoTextView.setText("");
            }
        });
    }
}

 

④ 结果

android学习----基础UI编程(七)

 

 

 

20. MultiAutoCompleteTextView

 

智能输入框 MultiAutoCompleteTextView

1.简介

   继承自AutoCompleteTextView,延长AutoCompleteTextView的长度

      AutoCompleteTextView可以实现简单的自动完成功能,而MultiCompleteTextView的区别就在于可以设置分隔标记。
        MultiCompleteTextView通过public void setTokenizer (MultiAutoCompleteTextView.Tokenizer t)函数设置分隔标记,有了分隔标记,就可以实现在有分隔符的情况下,将输入的句子进行多次自动完成。

      分隔标记MultiAutoCompleteTextView.Tokenizer 用来区分不同的子串.

 

2.重要方法

    enoughToFilter():当文本长度超过阈值时过滤

   performValidation():代替验证整个文本,这个子类方法验证每个单独的文字标记

   setTokenizer(MultiAutoCompleteTextView.Tokenizer t):用户正在输入时tokenizer设置将用于确定文本相关范围内。

 

示例代码

① 新建工程

② 修改main.xml 布局,添加一个TextView、一个MultiAutoCompleteTextView、一个Button

<?xml version="1.0" encoding="utf-8"?>
<AbsoluteLayout
    android:id="@+id/widget0"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    xmlns:android="
http://schemas.android.com/apk/res/android" >
<TextView
    android:id="@+id/TextView_InputShow"
    android:layout_width="228px"
    android:layout_height="47px"
    android:text="请输入"
    android:textSize="25px"
    android:layout_x="42px"
    android:layout_y="37px"/>
<MultiAutoCompleteTextView
    android:layout_width="275px"
    android:layout_height="wrap_content"
    android:text=""
    android:id="@+id/MultiAutoCompleteTextView"
    android:layout_x="23px"
    android:layout_y="98px"/>
<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_x="127dip"
    android:text="清空"
    android:id="@+id/Button_clean"
    android:layout_y="180dip"/>
</AbsoluteLayout>

 

③ MultiAutoCompleteTextView 是可以自动完成用户输入,能够添加多个输入,注意设置Tokenizer

//设置Tokenizer来确定用户输入文本的相关范围
myAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());

 

④ 修改mainActivity.java,实现动态自动完成用户输入相关内容

package zyf.Ex_Ctrl_13_B;
//导入使用的包
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.MultiAutoCompleteTextView;

public class Ex_Ctrl_13_B extends Activity {
    // Called when the activity is first created. 
    //定义要使用的类对象
    private String[] normalString = new String[] {
            "Android", "Android Blog","Android Market", "Android SDK",
            "Android AVD","BlackBerry","BlackBerry JDE", "Symbian",
            "Symbian Carbide", "Java 2ME","Java FX", "Java 2EE",
            "Java 2SE", "Mobile", "Motorola", "Nokia", "Sun",
            "Nokia Symbian", "Nokia forum", "WindowsMobile", "Broncho",
            "Windows XP", "Google", "Google Android ", "Google 浏览器",
            "IBM", "MicroSoft", "Java", "C++", "C", "C#", "J#", "VB" };
    private Button clean;
    private MultiAutoCompleteTextViemyAutoCompleteTextView;
    private ArrayAdapter<String> adapter;
   

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // 装入主屏布局main.xml 
        setContentView(R.layout.main);
        // 以findViewById()从XML中获取UI元素对象
        myAutoCompleteTextView =(MultiAutoCompleteTextView) findViewById(R.id.MultiAutoCompleteTextView);
        clean = (Button) findViewById(R.id.Button_clean);


        //new ArrayAdapter 对象并将normalString 字符串数组传入
        // 实现一个适配器对象,用来给自动完成输入框添加自动装入的内容

        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line , normalString);
        //将ArrayAdapter 添加AutoCompleteTextView 对象中
        // 给自动完成输入框添加内容适配器

        myAutoCompleteTextView.setAdapter(adapter);
        //设置Tokenizer来确定用户输入文本的相关范围,Tokenizer 为一个逗号分隔标记(CommaTokenizer)的实例
        myAutoCompleteTextView.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer() );
        //给清空按钮添加点击事件处理监听器
        clean.setOnClickListener(new Button.OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                // 清空
                myAutoCompleteTextView.setText("");
            }
        });
    }
}

 

⑤ 结果

android学习----基础UI编程(七)

 

关键点

1. MultiAutoCompleteTextView.setTokenizer

原型

   MultiAutoCompleteTextView.setTokenizer(MultiAutoCompleteTextView.Tokenizer t)

  设置分隔标记 。

参数

   MultiAutoCompleteTextView.Tokenizer :分隔标记,用来来区分不同的子串。

 

2.MultiAutoCompleteTextView.CommaTokenizer

一结构
  public static class MultiAutoCompleteTextView.CommaTokenizer

   extends Object

    implements MultiAutoCompleteTextView.Tokenizer

二 概述
  MultiAutoCompleteTextView.CommaTokenizer 是个 分隔标记组件,这个简易的组件可以用于一些列表中,这些列表包含被逗号以及一个或数个空格断开的项目。

 

这篇关于android学习-AutoCompleteTextView,MultiAutoCompleteTextView的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/937366

相关文章

Android协程高级用法大全

《Android协程高级用法大全》这篇文章给大家介绍Android协程高级用法大全,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友跟随小编一起学习吧... 目录1️⃣ 协程作用域(CoroutineScope)与生命周期绑定Activity/Fragment 中手

Unity新手入门学习殿堂级知识详细讲解(图文)

《Unity新手入门学习殿堂级知识详细讲解(图文)》Unity是一款跨平台游戏引擎,支持2D/3D及VR/AR开发,核心功能模块包括图形、音频、物理等,通过可视化编辑器与脚本扩展实现开发,项目结构含A... 目录入门概述什么是 UnityUnity引擎基础认知编辑器核心操作Unity 编辑器项目模式分类工程

Python学习笔记之getattr和hasattr用法示例详解

《Python学习笔记之getattr和hasattr用法示例详解》在Python中,hasattr()、getattr()和setattr()是一组内置函数,用于对对象的属性进行操作和查询,这篇文章... 目录1.getattr用法详解1.1 基本作用1.2 示例1.3 原理2.hasattr用法详解2.

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

Android Paging 分页加载库使用实践

《AndroidPaging分页加载库使用实践》AndroidPaging库是Jetpack组件的一部分,它提供了一套完整的解决方案来处理大型数据集的分页加载,本文将深入探讨Paging库... 目录前言一、Paging 库概述二、Paging 3 核心组件1. PagingSource2. Pager3.

Android kotlin中 Channel 和 Flow 的区别和选择使用场景分析

《Androidkotlin中Channel和Flow的区别和选择使用场景分析》Kotlin协程中,Flow是冷数据流,按需触发,适合响应式数据处理;Channel是热数据流,持续发送,支持... 目录一、基本概念界定FlowChannel二、核心特性对比数据生产触发条件生产与消费的关系背压处理机制生命周期

Android ClassLoader加载机制详解

《AndroidClassLoader加载机制详解》Android的ClassLoader负责加载.dex文件,基于双亲委派模型,支持热修复和插件化,需注意类冲突、内存泄漏和兼容性问题,本文给大家介... 目录一、ClassLoader概述1.1 类加载的基本概念1.2 android与Java Class

Android DataBinding 与 MVVM使用详解

《AndroidDataBinding与MVVM使用详解》本文介绍AndroidDataBinding库,其通过绑定UI组件与数据源实现自动更新,支持双向绑定和逻辑运算,减少模板代码,结合MV... 目录一、DataBinding 核心概念二、配置与基础使用1. 启用 DataBinding 2. 基础布局

Android ViewBinding使用流程

《AndroidViewBinding使用流程》AndroidViewBinding是Jetpack组件,替代findViewById,提供类型安全、空安全和编译时检查,代码简洁且性能优化,相比Da... 目录一、核心概念二、ViewBinding优点三、使用流程1. 启用 ViewBinding (模块级

Go学习记录之runtime包深入解析

《Go学习记录之runtime包深入解析》Go语言runtime包管理运行时环境,涵盖goroutine调度、内存分配、垃圾回收、类型信息等核心功能,:本文主要介绍Go学习记录之runtime包的... 目录前言:一、runtime包内容学习1、作用:① Goroutine和并发控制:② 垃圾回收:③ 栈和