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、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

Android里面的Service种类以及启动方式

《Android里面的Service种类以及启动方式》Android中的Service分为前台服务和后台服务,前台服务需要亮身份牌并显示通知,后台服务则有启动方式选择,包括startService和b... 目录一句话总结:一、Service 的两种类型:1. 前台服务(必须亮身份牌)2. 后台服务(偷偷干

Java深度学习库DJL实现Python的NumPy方式

《Java深度学习库DJL实现Python的NumPy方式》本文介绍了DJL库的背景和基本功能,包括NDArray的创建、数学运算、数据获取和设置等,同时,还展示了如何使用NDArray进行数据预处理... 目录1 NDArray 的背景介绍1.1 架构2 JavaDJL使用2.1 安装DJL2.2 基本操

Android kotlin语言实现删除文件的解决方案

《Androidkotlin语言实现删除文件的解决方案》:本文主要介绍Androidkotlin语言实现删除文件的解决方案,在项目开发过程中,尤其是需要跨平台协作的项目,那么删除用户指定的文件的... 目录一、前言二、适用环境三、模板内容1.权限申请2.Activity中的模板一、前言在项目开发过程中,尤

Android数据库Room的实际使用过程总结

《Android数据库Room的实际使用过程总结》这篇文章主要给大家介绍了关于Android数据库Room的实际使用过程,详细介绍了如何创建实体类、数据访问对象(DAO)和数据库抽象类,需要的朋友可以... 目录前言一、Room的基本使用1.项目配置2.创建实体类(Entity)3.创建数据访问对象(DAO

Android WebView的加载超时处理方案

《AndroidWebView的加载超时处理方案》在Android开发中,WebView是一个常用的组件,用于在应用中嵌入网页,然而,当网络状况不佳或页面加载过慢时,用户可能会遇到加载超时的问题,本... 目录引言一、WebView加载超时的原因二、加载超时处理方案1. 使用Handler和Timer进行超

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;