灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2959回复:0

android学习笔记26----AutoCompleteTextView 与 MultiAutoCompleteTex

楼主#
更多 发布于:2012-09-06 13:43


1、简介
      在我们平常上网的时候经常会用到谷歌或百度,在输入框中输入我们想要输入的信息就会出现其他与其相关的提示信息,非常方便。这种效果在Android中是用AutoCompleteTextView实现的AutoCompleteTextView是一个可以编辑的文本view,当用户键入时,会自动显示完成建议信息。
建议列表显示在下拉列表框中,可以选中某项代替编辑框里的内容。
当用户点击回车键时,或者什么也没有选中点击ENTER建时下拉列表会自动消失。
建议列表是从一个数据适配器获取的数据。


[java]
import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.widget.AdapterView;
import Android.widget.ArrayAdapter;
import Android.widget.AutoCompleteTextView;
import Android.widget.AdapterView.OnItemClickListener;

public class AutoActivity extends Activity
{

    private AutoCompleteTextView autoCompleteTextView = null;

    private final String[] Citys = new String[]
    {

    "Belgium", "France", "Italy", "Germany", "Spain", "Sppp", "Itaggg"

    };

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.AutoCompleteTextView);

        // 配置设配器  
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
                AutoActivity.this,
                Android.R.layout.simple_dropdown_item_1line, Citys);

        autoCompleteTextView.setAdapter(arrayAdapter);
        
        autoCompleteTextView.setOnItemClickListener(new OnItemClickListener()
        {

            @Override
            public void onItemClick(AdapterView<?> parent, View view,
                    int position, long id)
            {                
                 System.out.println(autoCompleteTextView.getText().toString());              
            }            
        });          
    }    
}
import Android.app.Activity;
import Android.os.Bundle;
import Android.view.View;
import Android.widget.AdapterView;
import Android.widget.ArrayAdapter;
import Android.widget.AutoCompleteTextView;
import Android.widget.AdapterView.OnItemClickListener;
public class AutoActivity extends Activity
{
private AutoCompleteTextView autoCompleteTextView = null;
private final String[] Citys = new String[]
{
"Belgium", "France", "Italy", "Germany", "Spain", "Sppp", "Itaggg"
};
@Override
public void onCreate(Bundle savedInstanceState)
{
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  autoCompleteTextView = (AutoCompleteTextView) findViewById(R.id.AutoCompleteTextView);
  // 配置设配器
  ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
    AutoActivity.this,
    Android.R.layout.simple_dropdown_item_1line, Citys);
  autoCompleteTextView.setAdapter(arrayAdapter);
  
  autoCompleteTextView.setOnItemClickListener(new OnItemClickListener()
  {
   @Override
   public void onItemClick(AdapterView<?> parent, View view,
     int position, long id)
   {    
     System.out.println(autoCompleteTextView.getText().toString());    
   }  
  });  
}
}
[java]
  <span style="white-space: pre; background-color: rgb(240, 240, 240); "><LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"</span>    
    <span style="white-space: pre; background-color: rgb(240, 240, 240); "><LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"</span>    [java]
     Android:orientation="vertical"
     Android:layout_width="fill_parent"
     Android:layout_height="fill_parent"
     >
    
<AutoCompleteTextView  
    Android:id="@+id/AutoCompleteTextView"
    Android:layout_width="fill_parent"  
    Android:layout_height="wrap_content"  
    Android:completionThreshold="1"
    />
    
</LinearLayout>
    Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    >
  
<AutoCompleteTextView
Android:id="@+id/AutoCompleteTextView"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:completionThreshold="1"
    />
  
</LinearLayout>
补充:
completionThreshold:它的值决定了你在AutoCompleteTextView至少输入几个字符,它才会具有自动提示的功能。另,默认最多提示20条。

dropDownAnchor:它的值是一个View的ID,指定后,AutoCompleteTextView会在这个View下弹出自动提示。
dropDownSelector:应该是设置自动提示的背景色之类的,没有尝试过,有待进一步考证。
dropDownWidth:设置自动提示列表的宽度。




public class MultiAutoCompleteTextViewActivity extends Activity
{
    private MultiAutoCompleteTextView autoCom = null;;
    private Button btnClear = null;
    private String[] normalString = null;

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        normalString = new String[]
        { "Android", "Android sxp", "sxp", "sxp wx" };
        autoCom = (MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView);
        btnClear = (Button) findViewById(R.id.btn);
        
        // simple_dropdown_item_1line  
        // 简单的一些样式,貌似是自定义的  
        
        ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                Android.R.layout.simple_dropdown_item_1line, normalString);
        autoCom.setAdapter(adapter);

        // setTokenizer(); // Sets the Tokenizer 标记生成器 that will be used to  
        // determine the relevant range of the text where the user is typing. //  
        // CommaTokenizer(): // 这个简易的组件可以用于一些列表中,这些列表包含被逗号以及一个或数个空格断开的项目。 //  
        // 不太理解,这个方法不加的话没法自动完成文本;添加的话又觉得是废话,列表当然以逗号分隔了  
        
        autoCom.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
        btnClear.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View v)
            {
                autoCom.setText("");
            }
        });
    }
}
public class MultiAutoCompleteTextViewActivity extends Activity
{
private MultiAutoCompleteTextView autoCom = null;;
private Button btnClear = null;
private String[] normalString = null;
@Override
public void onCreate(Bundle savedInstanceState)
{
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  normalString = new String[]
  { "Android", "Android sxp", "sxp", "sxp wx" };
  autoCom = (MultiAutoCompleteTextView) findViewById(R.id.multiAutoCompleteTextView);
  btnClear = (Button) findViewById(R.id.btn);
  
  // simple_dropdown_item_1line
  // 简单的一些样式,貌似是自定义的
  
  ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
    Android.R.layout.simple_dropdown_item_1line, normalString);
  autoCom.setAdapter(adapter);
  // setTokenizer(); // Sets the Tokenizer 标记生成器 that will be used to
  // determine the relevant range of the text where the user is typing. //
  // CommaTokenizer(): // 这个简易的组件可以用于一些列表中,这些列表包含被逗号以及一个或数个空格断开的项目。 //
  // 不太理解,这个方法不加的话没法自动完成文本;添加的话又觉得是废话,列表当然以逗号分隔了
  
  autoCom.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
  btnClear.setOnClickListener(new OnClickListener()
  {
   @Override
   public void onClick(View v)
   {
    autoCom.setText("");
   }
  });
}
}
[java]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:orientation="vertical"
    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    >

<TextView        
    Android:id="@+id/textView"        
    Android:layout_width="fill_parent"        
    Android:layout_height="wrap_content"        
    Android:layout_gravity="center_horizontal"        
    Android:text="请输入"        
    Android:textSize="20px" ></TextView>    
    
<MultiAutoCompleteTextView        
    Android:id="@+id/multiAutoCompleteTextView"        
    Android:layout_width="260px"        
    Android:layout_height="wrap_content"        
    Android:layout_gravity="center_horizontal"        
    Android:text="" />
    
<Button        
    Android:id="@+id/btn"        
    Android:layout_width="wrap_content"        
    Android:layout_height="wrap_content"        
    Android:layout_gravity="center_horizontal"        
    Android:text="清除" >    </Button>



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

http://www.atcpu.com/index.php?m=content;c=content;a=edit;catid=90;id=120457;pc_hash=2OWOMG Android:orientation="vertical"


    Android:layout_width="fill_parent"
    Android:layout_height="fill_parent"
    >
<TextView      
Android:id="@+id/textView"      
Android:layout_width="fill_parent"      
Android:layout_height="wrap_content"      
Android:layout_gravity="center_horizontal"      
Android:text="请输入"      
Android:textSize="20px" ></TextView>  

<MultiAutoCompleteTextView      
Android:id="@+id/multiAutoCompleteTextView"      
Android:layout_width="260px"      
Android:layout_height="wrap_content"      
Android:layout_gravity="center_horizontal"      
Android:text="" />

<Button      
Android:id="@+id/btn"      
Android:layout_width="wrap_content"      
Android:layout_height="wrap_content"      
Android:layout_gravity="center_horizontal"      
Android:text="清除" >    </Button>

</LinearLayout>
AutoCompleteTextView 与 MultiAutoCompleteTextView的区别:

AutoCompleteTextView 只匹配一次

MultiAutoCompleteTextView可以匹配多次


喜欢0 评分0
游客

返回顶部