【发布时间】:2011-03-28 23:31:49
【问题描述】:
我有一个ListView,我在一个单独的 XML 文件中定义了每个项目的布局。在这个文件中,我包含了一个 RatingBar 和一个 EditText。
我已经在这个ListView 中以编程方式创建了 7-8 个项目。当我滚动浏览它们时,它似乎很麻烦。下面是一些例子:
如果我将焦点设置到第一行中的
EditText,然后向下滚动ListView,其他行中的随机EditTexts将获得焦点。似乎是焦点消失后的下一个EditText获得焦点。也许这是故意的,但作为用户,这似乎很奇怪。
1234563
有时,当我点击
EditText,收到一个虚拟键盘并开始输入字母时,我一输入这些字母就会消失。当我点击
EditText时,虚拟键盘会显示出来,但EditText失去焦点,我必须再次点击EditText。即使我已将
RatingBar设置为focusable="false",如果我移动滚轮,它仍然会抓住焦点。
我的一个问题是,当我在虚拟键盘中键入一个字符时,所有可见的列表项都会重新绘制(并且由于 EditText 的文本设置为一些数据,它是空的,它被清除了。我不'不明白为什么Android会决定每次我输入一个字符时都重新绘制列表。
这是我用来绘制它们的 XML。它们是白色的气泡,有一个灰色的边框,还有一些文字,一个RatingBar 和一个EditText 里面:
<?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="wrap_content"
android:paddingTop="10dip"
android:paddingBottom="10dip"
android:paddingLeft="15dip"
android:paddingRight="15dip"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dip"
android:background="@drawable/shape_outer">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dip"
android:background="@drawable/shape_inner">
<TextView
android:id="@+id/rating_category"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/dark_gray"
android:textStyle="bold"
android:layout_marginBottom="10dip" />
<RatingBar
android:id="@+id/rating_rating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:rating="0"
android:stepSize="1"
android:focusable="false"
android:clickable="false"
/>
<EditText
android:id="@+id/rating_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_column="1"
android:padding="6dip"
android:textColor="#000000"
android:gravity="left|top"
android:lines="3"
android:hint="Comment"
android:imeOptions="actionDone" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
【问题讨论】:
-
我刚刚投了赞成票,因为我喜欢你的问题名称。你的虚拟设备有多强大?
-
大声谢谢。创建虚拟设备时我唯一做的事情(我只是在这里输入“VD”并想我会拼写出来)是输入一个名称并选择目标(2.1)。其他一切都是默认的。
-
这里似乎发生的是,当我在虚拟键盘中键入一个字符时,所有可见的列表项都会重新绘制(并且由于 EditText 的文本设置为一些数据,它是空的,它被清除。为什么输入文本会重绘列表项???
-
我有一个错误的 ListView,其中也包含表单元素。用户响应在滚动到视图之外时消失。找到这篇文章后,我很难过我必须重新编码,但很高兴知道我不应该再寻找答案了。 +1
-
这里也一样。不过,比起悲伤,我更沮丧,希望我早点知道它的局限性。
标签: android listview listviewitem virtual-keyboard