android中创建具有自动提示功能的菜单

本文介绍如何在Android应用中实现自动补全功能,通过使用AutoCompleteTextView与ArrayAdapter,可以轻松创建类似Google搜索提示的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

通过Google上网搜索时,只要输入几个文字,就会显示相近的关键字让你挑选,而这种效果其实在Android中是非常容易达到的。事实上,AndroidAutoCompleteTextView Widget,只要搭配ArrayAdapter就能设计出类似Google搜索提示的效果。

本范例先在Layout当中布局一个AutoCompleteTextView Widget,然后通过预先设置好的字符串数组,将此字符串数组放入ArrayAdapter,最后利用AutoCompleteTextView.setAdapter方法,就可以让AutoCompleteTextView Widget具有自动完成提示的功能。例如,只要输入ab,就会自动带出包含ab的所有字符串列表。

范例程序

src/irdc.ex04_13/EX04_13.java

本范例程序主要示范AutoCompleteTextView用法,再次使用到ArrayAdapter,只要是有下拉菜单的项目,都必须使用到ArrayAdapter对象。此外,将ArrayAdapter添加AutoComplete TextView对象中,所使用的方法为setAdapter,当中传输唯一的参数类型即为字符串类型的ArrayAdapter

 

/* import程序略 */

 

public class EX04_13 extends Activity

{

  private static final String[] autoStr = new String[]

  { "a", "abc", "abcd", "abcde" };

 

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle savedInstanceState)

  {

    super.onCreate(savedInstanceState);

    /*加载main.xml Layout */

    setContentView(R.layout.main);

 

    /* new ArrayAdapter对象并将autoStr字符串数组传入 */

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,

        android.R.layout.simple_dropdown_item_1line, autoStr);

 

    /* findViewById()取得AutoCompleteTextView对象 */

    AutoCompleteTextView myAutoCompleteTextView =

    (AutoCompleteTextView) findViewById(R.id.myAutoCompleteTextView);

 

    /* ArrayAdapter添加AutoCompleteTextView对象中 */

    myAutoCompleteTextView.setAdapter(adapter);

  }

}

扩展学习

有个类似AutoCompleteTextView的对象,称为MultiAutoCompleteTextView,它继承了Auto CompleteTextView,差别在于它可以在输入框一直增加新的选择值,其编写方式也有些不同,一定要setTokenizer,否则会出现错误,以下范例是传入CommaTokenizer类,结果会将原本选择框里的值往后加逗号及空白。

 

package irdc.ex04_13;

 

import android.app.Activity;

import android.os.Bundle;

import android.widget.ArrayAdapter;

import android.widget.AutoCompleteTextView;

import android.widget.MultiAutoCompleteTextView;

 

public class EX04_13 extends Activity

{

  private static final String[] autoStr = new String[]

  { "a", "abc", "abcd", "abcde" };

 

  /** Called when the activity is first created. */

  @Override

  public void onCreate(Bundle savedInstanceState)

  {

    super.onCreate(savedInstanceState);

    /*加载main.xml Layout */

    setContentView(R.layout.main_1);

 

    /* new ArrayAdapter对象并将autoStr字符串数组传入 */

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,

        android.R.layout.simple_dropdown_item_1line, autoStr);

 

    /* findViewById()取得MultiAutoCompleteTextView对象 */

    MultiAutoCompleteTextView myAutoCompleteTextView =

    (MultiAutoCompleteTextView)

    findViewById(R.id.myAutoCompleteTextView);

 

    /* ArrayAdapter添加AutoCompleteTextView对象中 */

    myAutoCompleteTextView.setAdapter(adapter);

    myAutoCompleteTextView.setTokenizer

    (new MultiAutoCompleteTextView.CommaTokenizer());

  }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值