0
点赞
收藏
分享

微信扫一扫

Android自动补全(一)

small_Sun 2022-08-02 阅读 120



android自动补全


  1. 在activtity_main.xml 文件中写一个AutoCompleteTexView(自动完成文本框)标签

<AutoCompleteTextView
android:id="@+id/actv_main_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
/>


  1. 在MainActivity.java的文件中
  2. 根据id获取自动完成的文本框autoCompleteTextView=(AutoCompleteTextView)findViewById(R.id.actv_main_1);
  3. 在数据库中获取数据\在strings.xml的文件中写一个数组(在此以数组为例)

<resources>
<string name="app_name">Android_08_0628</string>
<string-array name="str_data">
<item>李江</item>
<item>李小龙</item>
<item>李靖</item>
<item>李月</item>
<item>123</item>
<item>10234</item>
<item>12305</item>
<item>12036</item>
</string-array>
</resources>


获取数组的数据


String[] data = getResources().getStringArray(R.array.str_data);


.将数据放入文本框



a。使用(数组)适配器



ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,data);



b。将适配器设置给控件



autoCompleteTextView.setAdapter(adapter);



----运行发现要到第二个文字才开始出现自动补全,解决如下



在activity.xml的文件中的自动完成文本款中加入一行代码



android:completionThreshold="1"(设置几个字符提示)

总体如下
<AutoCompleteTextView
android:id="@+id/actv_main_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
/>



####如果想要让自动补全框使用自己的形式,则可以自己写一个类似于android.R.layout. simple_list_item_1的文件



如下:在layout中新建一个complete_layout.xml



<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/text1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:textSize="20sp"
android:textColor="#09A1FF"
/>


并将MainActivity.java中的



使用适配器的那一块



ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,data);



改成



ArrayAdapter adapter = new ArrayAdapter(this,R.layout.complete_layout,data);





Android自动补全(一)_数组





由此,自动补全完成了



所有代码如下



activity_main.xml



<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="pw.gutao.android_08_0628.MainActivity">

<AutoCompleteTextView
android:id="@+id/actv_main_1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
/>

</RelativeLayout>


Strings.xml



<resources>
<string name="app_name">Android_08_0628</string>
<string-array name="str_data">
<item>李江涛</item>
<item>李小龙</item>
<item>李靖</item>
<item>李月</item>
<item>123</item>
<item>10234</item>
<item>12305</item>
<item>12036</item>
</string-array>
</resources>


MainActivity.java



package pw.gutao.android_08_0628;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;

public class MainActivity extends AppCompatActivity {

private AutoCompleteTextView autoCompleteTextView;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

//获取自动完成的文本款
autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.actv_main_1);
//获取数组
String[] data = getResources().getStringArray(R.array.str_data);
//将数据放入文本框
//使用适配器 数组适配器(将数据通过Android自带的形式放入上下文中)
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,data);
//将适配器设置给控件
autoCompleteTextView.setAdapter(adapter);

}
}





一句话:自己的优秀习惯要将动力放在自己身上,不要把想要让自己更优秀的习惯放在别人身上,我们不能让任何人在某时出现的意外而影响我们的成长。



举报

相关推荐

0 条评论