- 浏览: 1225155 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (353)
- java基础 (40)
- tapestry (16)
- gwt (14)
- ajax (7)
- linux (8)
- ubuntu (18)
- eclipse (6)
- dojo (2)
- javascript (7)
- maven (4)
- 日常生活 (29)
- web2.0 (2)
- jsonrpc (1)
- compass (1)
- lucene (0)
- spring (10)
- cluster (3)
- 数据结构 (2)
- sqlserver (1)
- tomcat (2)
- swing (1)
- servlet (1)
- hibernate (1)
- firefox (1)
- Java-Puzzlers (1)
- Wicket (2)
- mysql (10)
- windows (5)
- Webwork (1)
- struts2 (1)
- Seam (2)
- jboss (1)
- idea (6)
- 分布计算 (3)
- Python-Django (7)
- Hadoop (1)
- 工具 (3)
- Tokyo Tyrant (2)
- Comet (1)
- android (115)
- 音乐 (6)
- cxf (1)
- mqtt (1)
最新评论
-
hesai_vip:
学习了,感谢
gradlew wrapper使用下载到本地的gradle.zip文件安装。 -
imknown:
姚瑶大坏蛋 写道我也遇到了这个,用你这个方法,导致下拉刷新不起 ...
解决android-Ultra-Pull-To-Refresh下拉刷新组件中嵌套ViewPager的一个bug -
姚瑶大坏蛋:
我也遇到了这个,用你这个方法,导致下拉刷新不起作用了,你遇到过 ...
解决android-Ultra-Pull-To-Refresh下拉刷新组件中嵌套ViewPager的一个bug -
寐语者:
LeaderElection(String zookeeper ...
使用Zookeeper来为你的程序加上Leader Election的功能。 -
fyc0109:
博主, 安装了一部分还是报这个错误!FAILURE: Buil ...
gradlew wrapper使用下载到本地的gradle.zip文件安装。
很多时候, 在做自动下拉框时,默认点上去时需要显示一组默认的下拉数据。但是默认的AutoCompleteTextView是实现不了的, 因为setThreshold方法最小值是1,就算你设的值为0,也会自动改成1的。
这时我们可以创建一个类 继承AutoCompleteTextView,覆盖enoughToFilter,让其一直返回true就行。 然后再主动调用showDropDown方法, 就能在不输入任何字符的情况下显示下拉框。
ref:http://stackoverflow.com/questions/2126717/android-autocompletetextview-show-suggestions-when-no-text-entered
showDropDown()方法的执行并不总是有效的,我这边同样的代码:defy android2.3上可以显示;
note2 的android4.1 系统就不能够显示下拉框;
/** * <p>Specifies the minimum number of characters the user has to type in the * edit box before the drop down list is shown.</p> * * <p>When <code>threshold</code> is less than or equals 0, a threshold of * 1 is applied.</p> * * @param threshold the number of characters to type before the drop down * is shown * * @see #getThreshold() * * @attr ref android.R.styleable#AutoCompleteTextView_completionThreshold */
这时我们可以创建一个类 继承AutoCompleteTextView,覆盖enoughToFilter,让其一直返回true就行。 然后再主动调用showDropDown方法, 就能在不输入任何字符的情况下显示下拉框。
package com.wole.android.pad.view; import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; import android.widget.AutoCompleteTextView; /** * Created with IntelliJ IDEA. * User: denny * Date: 12-12-4 * Time: 下午2:16 * To change this template use File | Settings | File Templates. */ public class InstantAutoComplete extends AutoCompleteTextView { private int myThreshold; public InstantAutoComplete(Context context) { super(context); } public InstantAutoComplete(Context context, AttributeSet attrs) { super(context, attrs); } public InstantAutoComplete(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); } @Override public boolean enoughToFilter() { return true; } @Override protected void onFocusChanged(boolean focused, int direction, Rect previouslyFocusedRect) { super.onFocusChanged(focused, direction, previouslyFocusedRect); if (focused) { performFiltering(getText(), 0); showDropDown(); } } public void setThreshold(int threshold) { if (threshold < 0) { threshold = 0; } myThreshold = threshold; } public int getThreshold() { return myThreshold; } }
searchSuggestionAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, new ArrayList<String>(5)); search_et.setAdapter(searchSuggestionAdapter); search_et.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } //如果没有输入任何东西 则显示默认列表,否则调用接口,展示下拉列表 @Override public void afterTextChanged(Editable s) { if (s.length() >= 1) { if (fetchSearchSuggestionKeywordsAsyncTask != null) { fetchSearchSuggestionKeywordsAsyncTask.cancel(true); } fetchSearchSuggestionKeywordsAsyncTask =new FetchSearchSuggestionKeywordsAsyncTask(); fetchSearchSuggestionKeywordsAsyncTask.execute(); }else{ showHotSearchKeywords(); } } }); search_et.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String item = searchSuggestionAdapter.getItem(position); search_et.setText(item); search_btn.performClick(); } }); //点击autocompletetextview时,如果没有输入任何东西 则显示默认列表 search_et.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (TextUtils.isEmpty(search_et.getText().toString())) { showHotSearchKeywords(); } return false; } });
//这里发现很奇怪的事情, 需要每次new一个ArrayAdapter,要不然有时调用showDropDown不会有效果 private void showHotSearchKeywords() { MiscUtil.prepareHotSearchKeywords(getWoleApplication()); searchSuggestionAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line, getWoleApplication().hotSearchHistoryKeywords); search_et.setAdapter(searchSuggestionAdapter); searchSuggestionAdapter.notifyDataSetChanged(); search_et.showDropDown(); } private class FetchSearchSuggestionKeywordsAsyncTask extends AsyncTask<Void, Void, List<String>> { @Override protected List<String> doInBackground(Void... params) { List<String> rt = new ArrayList<String>(5); String keyword = search_et.getText().toString(); if (!TextUtils.isEmpty(keyword)) { try { String result = NetworkUtil.doGet(BaseActivity.this, String.format(Global.API_SEARCH_SUGGESTIOIN_KEYWORDS, URLEncoder.encode(keyword, "utf-8")), false); Log.i("FetchSearchSuggestionKeywordsAsyncTask", result); if (!TextUtils.isEmpty(result)) { JSONArray array = new JSONArray(result); for (int i = 0; i < array.length(); i++) { JSONObject jsonObject = array.getJSONObject(i); rt.add(jsonObject.optString("keyword")); } } } catch (Exception e) { e.printStackTrace(); } } return rt; } @Override protected void onPostExecute(List<String> strings) { super.onPostExecute(strings); if (!strings.isEmpty()) { //这里发现很奇怪的事情, 需要每次new一个ArrayAdapter,要不然有时调用showDropDown不会有效果 searchSuggestionAdapter = new ArrayAdapter<String>(BaseActivity.this, android.R.layout.simple_dropdown_item_1line, strings); search_et.setAdapter(searchSuggestionAdapter); searchSuggestionAdapter.notifyDataSetChanged(); } } }
ref:http://stackoverflow.com/questions/2126717/android-autocompletetextview-show-suggestions-when-no-text-entered
评论
4 楼
michaelye1988
2014-07-13
thanks!终于找到答案了,困扰了很久,原来是要new 一个适配器,notifyDataSetChange没有效果,这坑爹货。
3 楼
gaobq
2013-10-15
tn0521 写道
似乎没有那么麻烦,给AutoCompleteTextView的对象加上一个setOnTouchListener,showDropDown()即可,代码如下
completeTextView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
completeTextView.showDropDown();//显示下拉列表
return false;
}
});
completeTextView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
completeTextView.showDropDown();//显示下拉列表
return false;
}
});
showDropDown()方法的执行并不总是有效的,我这边同样的代码:defy android2.3上可以显示;
note2 的android4.1 系统就不能够显示下拉框;
2 楼
tn0521
2013-07-29
似乎没有那么麻烦,给AutoCompleteTextView的对象加上一个setOnTouchListener,showDropDown()即可,代码如下
completeTextView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
completeTextView.showDropDown();//显示下拉列表
return false;
}
});
completeTextView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
completeTextView.showDropDown();//显示下拉列表
return false;
}
});
1 楼
tn0521
2013-07-29
似乎没有那么麻烦,给AutoCompleteTextView的对象加上一个setOnTouchListener,showDropDown()即可,代码如下
completeTextView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
completeTextView.showDropDown();//显示下拉列表
return false;
}
});
completeTextView.setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event){
completeTextView.showDropDown();//显示下拉列表
return false;
}
});
发表评论
-
安卓各种长知识的技术文章,不断更新
2015-10-27 18:24 796http://blog.udinic.com/2015/09 ... -
发现一个android sdk更新神速的镜像
2015-09-02 11:26 952mirrors.dormforce.net:80 //(栋力无 ... -
gradle项目中怎么集中管理你的依赖库
2015-08-16 11:30 737项目结构 引用root --gradleScript ... -
使用Dexposed为你的安卓应用加上在线修复的能力。
2015-08-11 16:15 6142移动客户端应用相对于W ... -
解决android-Ultra-Pull-To-Refresh下拉刷新组件中嵌套ViewPager的一个bug
2015-08-02 00:15 17076在项目中使用了android-Ultra-Pull-To-Re ... -
android有质量的面试题
2015-03-17 14:31 956https://github.com/android-cn/i ... -
提高Android Studio的gradle编译速度。
2015-03-12 14:12 4418发现用Android Studio的make和直接使用comm ... -
gradlew wrapper使用下载到本地的gradle.zip文件安装。
2015-03-12 01:26 15480使用gradlew来build项目时,有时候老是需要下载gra ... -
gradlew wrapper设置代理下载gradle
2015-02-27 18:25 45981. HTTP Only Proxy configuratio ... -
认识mqtt
2015-01-30 11:43 1109http://www.hivemq.com/mqtt-esse ... -
Google的Android性能模式
2015-01-14 14:44 775http://www.infoq.com/cn/news/20 ... -
反对Fragment的理由,顺便叫你如果创建自己的自定义view
2014-12-18 17:08 1131下面这篇文章讲了反对Fragment的理由,顺便叫你如果创建自 ... -
获取status bar的高度
2014-12-16 19:52 1316public static int getStatus ... -
最新的appCompat support library中,actionbar的自定义view不能占用全部的宽度
2014-12-02 23:22 957<style name="AppTheme&q ... -
ScrollTricks实现StickHeader效果
2014-11-06 19:07 1140https://code.google.com/p/roman ... -
AppCompat v21 — Material Design for Pre-Lollipop Devices!
2014-10-23 11:03 899http://android-developers.blogs ... -
国内Android Sdk Manager不能更新的问题。
2014-09-15 15:49 983加hosts 引用203.208.46.146 dl.goo ... -
在Centos上安装android sdk遇到的问题。
2014-09-15 12:00 1400安装好android sdk后, 打包时老是会有下面的问题。 ... -
Android的一些制作图表按钮的工具
2014-09-09 16:36 1555Android Button Maker Android P ... -
DESIGNER'S GUIDE TO DPI
2014-08-29 14:37 483强烈建议美工看看, 对于移动app的多密度屏幕的支持 http ...
相关推荐
默认情况下,AutoCompleteTextView的下拉列表高度是由系统决定的,通常基于屏幕尺寸和字体大小来计算每一项的高度,从而控制整个列表的显示数量。然而,这种机制在小屏幕设备上可能会导致一个问题:下拉列表中显示的...
1. **逐字提示**:在默认的`AutoCompleteTextView`中,当用户输入字符时,通常会显示与输入字符串完全匹配或部分匹配的建议列表。但逐字提示意味着,即使用户只输入了一个字符,也能根据这个字符显示出相关的建议,...
AutoCompleteTextView是Android系统提供的一种可以自动补全的文本输入控件,它允许用户在输入时根据已有的数据集匹配并显示建议的选项。这个功能通常用于搜索框、地址输入等场景,提升用户体验。在本主题中,我们将...
`AutoCompleteTextView` 是一个带下拉列表的文本输入框,当用户输入一部分内容后,会显示与之匹配的建议列表。其主要属性包括: 1. **android:completionThreshold**:定义触发下拉列表显示所需的最少字符数,默认...
在Android应用设计中,AutoCompleteTextView常用于提升用户体验,比如在搜索框中,当用户开始输入时,它会显示一个下拉列表,里面包含与已输入内容匹配的建议项。这种功能可以显著减少用户的输入时间,并减少输入...
5. **显示建议列表**:一旦过滤结果准备好,AutoCompleteTextView会显示一个下拉列表,展示匹配的建议。用户可以从列表中选择一条历史记录,或者继续输入创建新的条目。 6. **交互反馈**:为了提供良好的用户体验,...
这里,`this`是当前Activity的上下文,`android.R.layout.simple_dropdown_item_1line`是列表项的默认布局,`COUNTRIES`是待显示的数据源。 b. **设置适配器** 创建好适配器后,将其绑定到AutoCompleteTextView...
默认情况下,AutoCompleteTextView会显示一个下拉列表,该列表由ArrayAdapter填充,ArrayAdapter可以使用静态数组或动态获取的数据源。例如,使用ArrayList填充ArrayAdapter的代码如下: ```java ArrayList<String>...
AutoCompleteTextView是Android SDK提供的一种UI组件,用于在用户输入时提供下拉列表的自动提示功能,极大地提升了用户的输入体验。这个控件通常用于搜索框、地址输入等场景,可以根据用户输入的部分字符快速匹配出...
在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它允许用户在输入时自动显示匹配的建议列表,从而提升用户体验。本知识点主要关注如何实现`AutoCompleteTextView`与汉字和拼音的关联,使得用户可以...
AutoCompleteTextView是Android SDK提供的一种可以自动补全的文本输入框控件,它结合了EditText和ListView的功能,允许用户在输入时显示出与已输入内容匹配的建议列表。这个功能常见于许多应用程序,如搜索引擎、...
AutoCompleteTextView是Android SDK提供的一种用于输入文本时自动补全的视图组件,它扩展了EditText,能够根据用户输入的部分文字动态显示出匹配的建议列表。这个功能在许多应用中非常常见,例如搜索引擎、地址...
当用户在输入框中输入字符时,`AutoCompleteTextView`可以展示一个下拉列表,显示与已输入内容匹配的建议项。这种功能通常与数据源(如数组、列表或网络数据)结合使用,以提供动态的建议。 首先,我们需要在布局...
`AutoCompleteTextView`是`EditText`的一个子类,它可以动态地根据用户输入的内容展示下拉列表,列表中的项来自于数据源。默认情况下,`AutoCompleteTextView`可以与`ArrayAdapter`配合使用,但当我们需要处理的数据...
在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它允许用户在输入时自动显示匹配的建议列表。通常,我们使用`ArrayAdapter`来连接数据源和`AutoCompleteTextView`,但有时默认的功能可能无法满足...
在Android开发中,`AutoCompleteTextView` 是一个非常实用的组件,它允许用户在输入时自动显示匹配的建议列表,从而提升用户体验。本教程将详细讲解如何利用`AutoCompleteTextView` 实现中文和拼音关联的自动提示...
默认值为2,设置为1意味着用户输入一个字符就会显示建议列表。 ### 2. 数据源与适配器 `AutoCompleteTextView`需要一个数据源来提供下拉建议。通常,我们使用`ArrayAdapter`或自定义的`Adapter`来绑定数据。以下是...