• 自动完成文本框的功能和用法


           自动完成文本框(AutoCompleteTextView)从EditText派生而出,实际上它也是一个文本编辑框,但它比普通编辑框多了一个功能;当用户输入一定字符之后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择某个才菜单项之后,AutoCompleteTextView按用户选择自动填写该文本框。

         使用AutoCompleteTextView很简单,只要为他设置一个Adapter,该Adapter封装了AutoCompleteTextView预设的提示文本。

         AutoCompleteTextView还派生了一个子类:MultiAutoCompleteTextView,该子类的功能与AutoCompleteTextView基本相似,只是MultiAutoCompleteTextView允许输入多个提示项,多个提示项以分隔符分隔。MultiAutoCompleteTextView提供了setTokenizer()方法来设置分隔符。

        下面的布局文件中包含了AutoCompleteTextView和MultiAutoCompleteTextView。布局文件代码如下:

      

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <!-- 定义一个自动完成文本框,指定输入一个字符后进行提示 -->
    <AutoCompleteTextView android:id="@+id/auto"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:completionHint="请选择您喜欢的图书:"
               android:dropDownHorizontalOffset="20dp"
               android:completionThreshold="1" />
    <!-- 定义一个MultiAutoCompleteTextView组件 -->
    <MultiAutoCompleteTextView android:id="@+id/mauto"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:completionThreshold="1"/>
    
    </LinearLayout>

          上面的布局文件中定义了AutoCompleteTextView和MultiAutoCompleteTextView,接下来在程序中为他们绑定同一个Adapter,这意味着两个自动完成文本框的提示项完全相同,只是他们的表现行为略有差异。

          Adapter负责为它提示提示文本。主程序如下:

    package org.crazyit.helloworld;
    
    import android.os.Bundle;
    import android.app.Activity;
    import android.view.Menu;
    import android.widget.*;
    
    public class AutoCompleteTextViewTest extends Activity {
       AutoCompleteTextView actv;
       MultiAutoCompleteTextView mauto;
       //定义字符串数组,作为提示的文本
       String[] books=new String[]{"疯狂Java讲义",
                                   "疯狂Ajax讲义",
                                   "疯狂XML讲义",
                                   "疯狂Workflow讲义"};
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.auto_complete_text_view_test);
            //创建一个ArrayAdapter,封装数组
            ArrayAdapter<String> aa=new ArrayAdapter<String>(this
                    ,android.R.layout.simple_dropdown_item_1line,books);
            actv=(AutoCompleteTextView)findViewById(R.id.auto);
            //设置Adapter
            actv.setAdapter(aa);
            mauto=(MultiAutoCompleteTextView)findViewById(R.id.mauto);
            //设置Adapter
            mauto.setAdapter(aa);
            //为MultiAutoCompleteTextView设置分隔符
            mauto.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
            
        }
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            // Inflate the menu; this adds items to the action bar if it is present.
            getMenuInflater().inflate(R.menu.auto_complete_text_view_test, menu);
            return true;
        }
    
    }

    上面的程序中粗体字代码负责为AutoCompleteTextView、MultiAutoCompleteTextView设置同一个Adapter,并为MultiAutoCompleteTextView设置了分隔符。

    运行上面的Activity程序得如下效果:

  • 相关阅读:
    23.课程应用接口
    22.课程页面设计
    21.手机接口
    20.云通讯
    19.JWT
    18.权限认证
    解决github下载慢的终极方法
    vs code 配置c/c++环境
    Python 字符编码处理总结
    Python编码
  • 原文地址:https://www.cnblogs.com/wolipengbo/p/3379056.html
Copyright © 2020-2023  润新知