在ListView中,textview的textIsSelectable="true"无法正常工作。

6
 <TextView
                    android:id="@+id/txtSender"
                    style="@android:style/TextAppearance.Small"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:layout_marginTop="10dp"
                    android:background="@drawable/sender_bubble"
                    android:gravity="center_vertical"
                    android:maxEms="11"
                    android:paddingBottom="5dp"
                    android:paddingLeft="5dp"
                    android:paddingRight="15dp"
                    android:paddingTop="5dp"
                    android:text="1234567"
                    android:autoLink="all"
                    android:textColor="@color/color_black"
                    android:textIsSelectable="true"
                    android:visibility="visible" />

这是我自定义单元格中的文本视图。当我点击文本视图时,它不允许我选择文本。在我的Xperia 4.2.2上运行得非常完美,但是当我在版本为4.4.4的设备上运行相同的代码时,它却无法正常工作。
注意:当我将相同的android:textIsSelectable="true"属性设置到不在ListView中的Textview中时,在4.4.4中它可以正常工作。 ListView只会在半秒钟内移动到底部并重置到其原始位置。

1
请参考以下链接,或许可以帮到您。https://dev59.com/1GUo5IYBdhLWcg3wrg9D - MFP
@Beena:你在问题中编辑了什么? - Palak
@Palak:刚刚格式化了。突出显示了在4.4.4以上版本中出现问题的文本。 - Beena
@Palak:没有找到在列表视图中选择文本的可行方案。甚至在一些标准应用程序(如Whatsapp)中也遇到了同样的问题。 - Beena
@Beena:好的,你集中精力研究了ListView的可聚焦性吗? - Palak
显示剩余9条评论
3个回答

4
在我的情况下,这段代码没有起作用,因为我在xml布局中使用了textView,并将其属性设置为“android:visibility=”gone”,并在适配器代码中使其可见。所以,在你让textView可见后,需要调用此方法。
textView.setTextIsSelectable(true); 

它可以工作。但是,并不完全如此。似乎你可以选择TextView的文本。但是,屏幕会调整大小,然后选定的文本块立即消失。所以,它只是改变了屏幕,仅此而已。您可能需要防止这种变化或其他操作。 - c-an

1
在RecyclerView或ListView中删除android:descendantFocusability="blocksDescendants",以防止选择被阻塞。
此外,将TextView布局宽度从match_parent更改为wrap_content,以防止重用文本单元格时禁用可选文本功能。

我们正在使用 android:descendantFocusability="blocksDescendants" 来处理一些问题。有没有其他的替代方案可以与 textIsSelectable 一起使用呢? - Faisal Shaikh

-1

移除textIsSelectable属性,改用:

android:inputType="textMultiLine"

这段文本可以被选择和编辑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接