listview上有显示两个textview,如果textview中的文字长度超过一个固定的范围,则以ellipsize="end",省略结尾除来显示。 如下:
                <TextView android:id="@+id/text2" 
      android:layout_width="100dip" 
      android:layout_height="fill_parent"
      android:gravity="center_vertical"
      android:layout_gravity="center_vertical"
      android:ellipsize="end"
      android:singleLine="true"
      android:layout_weight="3"
           android:marqueeRepeatLimit="marquee_forever"   
/>
此时的此textview是不会自动滚动的,如果把android:ellipsize="marquee",则焦点移到listview该列的时候,该textview则会自动滚动。
     现在我要实现的功能就是,当我点击上下键,移动焦点,如果当焦点所在列的textview的长度超过一个固定的长度,则把它原来以结尾处省略的方式改为全部显示并且自动滚条的形式。
     如果说的更直白点,就是当我listview的某一列获得焦点后,则将它布局中的android:ellipsize="end"改为android:ellipseize="marquee"。请问该怎么做啊,我试了很多方法,都没成功。

解决方案 »

  1.   

    自定义一个view继承textview 重写 setFocus 方法 返回总是为true 这样你就能够保证你不需要为焦点而纠结
    你只要能够知道你的listview当前选中的是第几个子item 你把这个item的textview的marquee设置为"marquee"
    就行了,默认的全部是end
     但是我这个方法还有一个缺点就是你每次选中一项后都要重新的getView方法走一下 把上次选中的那个
    子item的marquee重新设置为end;
    textview的焦点和listview的焦点历来都是有些麻烦的;
    要不然你在textview的布局中设置setFocusable=“true”之类的;试试看 不行那就麻烦点用我上面的
    方法 或者是再找找资料看看吧