选择列表在Dialog中的AutoCompleteTextView中被截断

时间:2010-07-18 03:50:58

标签: android

我有一个对话窗口,覆盖整个屏幕高度的1/3,并显示在我的活动之上。该对话框包含两个AutoCompleteTextView字段。

我面临的问题是,当用户开始在AutoCompleteTextView中输入内容时,包含所有建议的列表只会显示到对话框的底端,但即使列表更长也不会超出。它看起来像是被切断了。 (截图左)

只有在我长按建议列表中的项目后,列表才会全长显示。 (截图右)

屏幕截图位于:http://img704.imageshack.us/i/dialogdropdown.png/ screenshot http://img704.imageshack.us/img704/1893/dialogdropdown.png

如何解决此问题,以便当用户开始输入内容时,列表会从头开始显示全长?

代码方面没什么特别的,我所做的就是:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this.getContext(), R.layout.nav_route_autocomplete_row, locStrings);        
AutoCompleteTextView txtStartPos = (AutoCompleteTextView) findViewById(R.id.txtStartPos);
txtStartPos.setAdapter(adapter);
...

一个解决方法的想法是以某种方式调度一个动作事件来模拟一个列表项的触摸(但然后不选择)。解决方案代码中的任何具体想法,任何人?

6 个答案:

答案 0 :(得分:1)

现在我假设这是一个错误,我已在此处提交:http://code.google.com/p/android/issues/detail?id=9917

但是,如果有人知道解决方案,我会非常感激,并乐意交换它以获得一些赏金。

编辑:

我想到的一个解决方法是将对话框扩展到屏幕的最底部,但保持背景透明,所以它看起来和现在一样,但实际上有一个不会切断列表的高度。我会尝试一下......

答案 1 :(得分:1)

不久前我遇到了这个问题。我与AutoCompleteTextView进行了小对话,在下拉列表中有超过10个项目。这份名单被削减了。我的解决方案是:
在带有参数

的Dialog布局文件中放置一些空的View
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
<!--
Some Views placed here
-->
       <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="invisible" />

</LinearLayout>

它让我的小对话就像一个全屏对话框,但实际上没有显示“tail”,我的DropDown根本没有被剪切,因为它有足够的空间来显示来自DropDown的列表项。

答案 2 :(得分:1)

if (yourlist.size() > 5) {
    yourtextview.setDropDownHeight(562);
} else {
    yourtextview.setDropDownHeight(anytextview.getHeight() * yourlist.size());
}

//Workaround ->  Write this condition under on click and on focus change of your autocomplete text view 

答案 3 :(得分:0)

只是在黑暗中拍摄,但您是否尝试在活动上方的对话框视图中将android:clipChildren设置为false

答案 4 :(得分:0)

我已经成功实现了这一点,但它并不漂亮。

我最终覆盖了我的SimpleCursorAdapter.newView()方法,向上走ViewParent层次结构,直到我到达根View,然后在{{{}}中通过ORing修改其WindowManager.LayoutParams 1}}标志。

每次显示下拉列表时都需要重做。

答案 5 :(得分:0)

如下所示:Scrolling drop-down-menu over the keyboard in autocompletetextview

您可以使用AutoCompleteTextView的属性 android:dropDownHeight 来强制它具有一定的高度。这并不能解决问题,但这是我能找到的最好的。

注意:只有在对话框中使用AutoCompleteTextView 时才会出现此问题。当它用于活动或片段的布局时,它可以正常工作。

这个问题从Gingerbread到Jelly Bean一直存在。