Android 安卓&x27;在ListView中带有选框的文本视图赢得';第一次显示时,请不要设置动画

Android 安卓&x27;在ListView中带有选框的文本视图赢得';第一次显示时,请不要设置动画,android,listview,marquee,Android,Listview,Marquee,我有一个带有自定义适配器的ListView。其中的每个项目都包含一个TextView <TextView android:id="@+id/chat_name" android:layout_height="48dp" android:layout_width="match_parent" android:textColor="#FFFFFF" android:gravity="center_vertical" android:ellipsi

我有一个带有自定义适配器的ListView。其中的每个项目都包含一个TextView

<TextView
    android:id="@+id/chat_name"
    android:layout_height="48dp"
    android:layout_width="match_parent"
    android:textColor="#FFFFFF"
    android:gravity="center_vertical"
    android:ellipsize="marquee"
    android:marqueeRepeatLimit="marquee_forever"
    android:singleLine="true"
    android:focusable="false"
    android:focusableInTouchMode="false"/>
除了第一次,它每次都有效。将项添加到适配器时,它会显示在listview上,但不会选框。单击项目时,将显示另一个活动。在用户返回ListView后,该项突然被选框。我要一直用马奎德

我已经尝试过使用覆盖
isFocused()
以始终返回true的方法对TextView进行子类化,但这没有帮助。行为保持不变。我还尝试了
focusable
focusableInTouchMode
属性的各种值,但没有成功。

请按如下方式使用requestFocus()函数

chatName.setSelected(true);
chatName.requestFocus();

我会工作。

在自定义适配器中,将其添加到getView中:

chatName.addOnLayoutChangeListener(new OnLayoutChangeListener() 
{
    @Override
    public void onLayoutChange(View v, ....) 
    {
        chatName.setSelected(true);
    }
});
chatName.addOnLayoutChangeListener(new OnLayoutChangeListener() 
{
    @Override
    public void onLayoutChange(View v, ....) 
    {
        chatName.setSelected(true);
    }
});