Java TextView椭圆在setText()上消失

Java TextView椭圆在setText()上消失,java,android,textview,Java,Android,Textview,下午好 我有以下文本视图: <TextView android:id="@+id/keypadwidget_number" android:tag="@string/phone_number_tag" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_

下午好

我有以下文本视图:

<TextView android:id="@+id/keypadwidget_number"
    android:tag="@string/phone_number_tag"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_centerVertical="true"
    android:textSize="30sp"
    android:ellipsize="start"
    android:scrollHorizontally="true"
    android:gravity="right"
    android:singleLine="true"
    android:textColor="@color/widget_text"
    android:layout_toLeftOf="@+id/keypadwidget_btn_delete"/>
但相反,我得到的是:

对不起,背景/文本颜色。不是我的选择

每个按钮都调用:

mPhoneNumberTextView.append(clickValue);
我的问题是,;我做错了什么

编辑:
当我将TextView的android:text属性设置为很长的值时,椭圆的设置与预期的一样。当
mPhoneNumberTextView.append(点击值)时运行时会中断。

使用android:layout\u width=“fill\u parent”
对于您的
文本视图
,我非常愤怒,每次选框时都在文本视图的左侧添加了一个可绘制的图标

    private boolean isMarqueed(TextView tv){
        return isMarqueed(tv.getText().toString(), mPhoneNumberTextView.getWidth(), mPhoneNumberTextView);
    }

    private boolean isMarqueed(String text, int textWidth, TextView tv) {
        Paint testPaint = new Paint();
        testPaint.set(tv.getPaint());
        boolean isMarquee = true;
        if (textWidth > 0) {
            int availableWidth = (int) (textWidth - tv.getPaddingLeft() - tv.getPaddingRight()-testPaint.measureText(text));
            if(availableWidth > 0)
                isMarquee = false;
        }
        return isMarquee;
    }

这是

的一个微小变化,我注意到这种情况有时发生在我身上。我发现的唯一解决方法是使用maxLength属性指定允许填充textView的最大字符数。您是否也尝试过将textView的长度设置为与家长匹配?谢谢您的回复。maxLength解决方案没有帮助,因为我想让用户输入任意长度的文本。此外,我还尝试更改布局宽度以匹配父级,但也没有帮助。看看我的一些代码,我发现我还添加了android:maxlines=“1”属性。尝试添加并删除android:singleLine=“true”并查看android:singleLine是否已被弃用,请按照Jade的建议使用android:maxlines。也可以使用android:layout\u width=“fill\u parent”。我现在不在工作,但文档中没有提到任何关于弃用的内容。你能把我转到声称是这样的资源处吗?
    private boolean isMarqueed(TextView tv){
        return isMarqueed(tv.getText().toString(), mPhoneNumberTextView.getWidth(), mPhoneNumberTextView);
    }

    private boolean isMarqueed(String text, int textWidth, TextView tv) {
        Paint testPaint = new Paint();
        testPaint.set(tv.getPaint());
        boolean isMarquee = true;
        if (textWidth > 0) {
            int availableWidth = (int) (textWidth - tv.getPaddingLeft() - tv.getPaddingRight()-testPaint.measureText(text));
            if(availableWidth > 0)
                isMarquee = false;
        }
        return isMarquee;
    }