按照网上的一模一样写的
xml文件:
android:id="@+id/showSongName"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="0.06"
android:textColor="#000000"
android:textSize="16sp"
android:focusable="true"
android:ellipsize="marquee"
android:singleLine="true"
android:marqueeRepeatLimit="marquee_forever"
android:focusableInTouchMode="true"
android:scrollHorizontally="true"
java
public class Marquee_TextView extends TextView{
public Marquee_TextView(Context context) {
super(context);
}
public Marquee_TextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
public Marquee_TextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean isFocused() {
return true;
}
}
哪里错了吗??怎么文字没动呢?郁闷,求解答啊
后来又出现了问题,界面的一个按钮事件是打开一个小的界面,然后问题就来了,按钮事件响应后,文字又不滚动了,这时,就在Marquee_TextView 中重写方法onFocusChanged和onWindowFocusChanged,添加的代码如下:
@Override
protected void onFocusChanged(boolean focused, int direction,
Rect previouslyFocusedRect) {
if(focused)
{
super.onFocusChanged(focused, direction, previouslyFocusedRect);
}
}
@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {
if(hasWindowFocus)
super.onWindowFocusChanged(hasWindowFocus);
}
这样就不用textview获取焦点时才能够文字滚动了,可以一直滚动
我自己找到原因了,原来是textview的宽度要设置一定的值,要不然字数比宽度少,是没有效果的,所以weight不能用,并且把width设置称100dip就可以了,给后面的人一个参考哦
感觉就像要TextView超过显示.....一样,必须给TextView设置最大宽度,不然不会显示....,并且会显示截断