2 yu9922 Yu9922 于 2013.05.22 09:20 提问

TextView 文字水平滚动怎么不动

按照网上的一模一样写的
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;
    }

}

哪里错了吗??怎么文字没动呢?郁闷,求解答啊

3个回答

Yu9922
Yu9922   2013.05.22 09:35
已采纳

我自己找到原因了,原来是textview的宽度要设置一定的值,要不然字数比宽度少,是没有效果的,所以weight不能用,并且把width设置称100dip就可以了,给后面的人一个参考哦

suannai0314
suannai0314 那你可以直接将你的代码采纳哦~点击答案左侧的√
4 年多之前 回复
Yu9922
Yu9922   2013.05.22 11:19

后来又出现了问题,界面的一个按钮事件是打开一个小的界面,然后问题就来了,按钮事件响应后,文字又不滚动了,这时,就在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获取焦点时才能够文字滚动了,可以一直滚动

oSanYeCao1234567
oSanYeCao1234567   Ds   Rxr 2016.07.27 22:22

感觉就像要TextView超过显示.....一样,必须给TextView设置最大宽度,不然不会显示....,并且会显示截断

Csdn user default icon
上传中...
上传图片
插入图片