【Android学习笔记】AutoCompleTextView的使用

本文介绍如何在Android应用中实现城市添加功能的联想补全,通过使用AutoCompleteTextView并设置适配器来简化操作流程。包括创建自定义适配器,设置输入阈值,以及修改下拉窗口样式等步骤。

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

      在做一个添加城市的项目的时候,会用到联想功能,就是输入第一个字,然后联想自动补全,安卓有个自带的AutoCompleTextView,英文都很通俗易懂,自动补全textview,这个东西很方便,之前在网上查了一大堆,看了好久,他们说要什么自定义AutoCompleTextView,或者自定义AutoCompleTextView所用到的adapter,超级麻烦,看得我都晕了,后来发现了其实很简单就能实现联想功能了。

     首先,得有个avtivity

public class AddCitiesActivity extends Activity implements OnClickListener{
	private TextView title;
	private AutoCompleteTextView add_cities_text;
	private String[] citie = new String[] { "北京","上海","天津","重庆","香港","澳门","台北","高雄"};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		requestWindowFeature(Window.FEATURE_NO_TITLE);// 隐藏顶部title
		super.onCreate(savedInstanceState);
		Intent intent = this.getIntent();
		final ArrayAdapter<String>adapter_city=new ArrayAdapter<String>(         //不用自定义adapter,直接用系统的
				this,android.R.layout.simple_dropdown_item_1line,citie);
		setContentView(R.layout.activity_addcities);
		title = (TextView) findViewById(R.id.myTextView);
		add_cities_text = (AutoCompleteTextView) findViewById(R.id.add_cities_text);
		add_cities_text.setThreshold(1);//这里是设置输入1个字就开始联想
		add_cities_text.setAdapter(adapter_city);
		
		add_cities_text.setOnItemClickListener(new OnItemClickListener() {
			@Override
			public void onItemClick(AdapterView<?> parent, View view,int position, long id) {
				String city_add = add_cities_text.getAdapter().getItem(position).toString();
				title.setText(city_add);
			}
			});
    }  

	}


xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    tools:context=".MainActivity"
    android:background="@drawable/bg_managecity"
    android:orientation="vertical">

        <AutoCompleteTextView
            android:id="@+id/add_cities_text"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="30dip"
            android:layout_marginRight="30dip"
            android:layout_marginTop="10dip"
            android:layout_gravity="center_vertical"
            android:hint="@string/action_add"
            android:background="@drawable/bg_search"
            android:textSize="20sp" />
    <TextView
        android:id="@+id/myTextView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dip"
        android:layout_marginLeft="30dip"
        android:textColor="@color/sys_background"
        android:textSize="15sp"
        android:text="@string/hot_city" />
    
</LinearLayout>


          如果想修改AutoCompleteTextView的popupwindow的背景,在xml布局里面的 android:popupBackground="@color/white"属性就是设置下拉框的背景色。这个属性打首字母不会自动补全提示,但复制过去,确实可用。

         如果想修改popupwindow的样式,可自己新建一个xml,内容如下,替换默认使用的simple_dropdown_item_1line。

item_autocomplete.xml:

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@android:id/text1"
    style="?android:attr/dropDownItemStyle"
    android:textAppearance="?android:attr/textAppearanceSmallInverse"
    android:singleLine="true"
    android:layout_width="match_parent"
    android:layout_height="38dp"
    android:layout_marginTop="5dp"
    android:layout_marginBottom="5dp"
    android:background="@color/white"
    android:ellipsize="marquee" />
再把原本的

ArrayAdapter<String>adapter_city=new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,citie);

改为

  ArrayAdapter<String> adapter_city=new ArrayAdapter<String>(this,R.layout.item_autocomplete,citie);   




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值