ListView中的TextView文本未被椭圆化

时间:2012-01-05 02:30:43

标签: android android-listview textview ellipsis

我正在尝试将漫游添加到listview中的textview中,但它无效。

请参阅下面的xml定义。

在这种情况下,它不会出现在模拟器或设备上:

?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:focusable="true">
    <ImageView android:id="@+id/imageview" android:layout_width="30dip"
        android:layout_height="30dip" android:layout_centerVertical="true"
        android:layout_alignParentLeft="true" android:src="@drawable/about"
        android:layout_margin="8dip"/>
    <TextView android:id="@+id/title" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:layout_toRightOf="@+id/imageview"
        android:textStyle="bold" android:textColor="#000000"
            android:textSize="15sp" android:lines="1" 
        android:ellipsize="marquee" android:inputType="text"
        android:marqueeRepeatLimit="3" 
        android:layout_marginRight="15dip"
        android:layout_centerVertical="true"
                android:layout_toLeftOf="@+id/delete">
    </TextView>
    <ImageButton android:id="@+id/delete" android:layout_width="wrap_content"
        android:layout_height="wrap_content" android:layout_centerVertical="true"
        android:layout_alignParentRight="true" android:layout_marginRight="0dip"
        android:layout_margin="5dip" android:src="@drawable/delete_icon"
        />


</RelativeLayout>

在这种情况下,它会在模拟器上出现,而不是在设备上出现:

 <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
    <ImageView android:id="@+id/imageview"
    android:layout_width="wrap_content"
            android:layout_height="wrap_content"
                         android:layout_centerVertical="true" android:layout_alignParentLeft="true"/>
        <TextView android:id="@+id/title" android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:layout_toRightOf="@+id/imageview"
             android:textStyle="bold" android:textColor="#000000"
             android:layout_marginLeft="10dip" android:layout_marginRight="10dip"
            android:textSize="15sp"  android:cacheColorHint="#00000000"> 
        </TextView>
        <TextView android:id="@+id/shortdesc" android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:layout_below="@+id/title"
            android:layout_toRightOf="@+id/imageview" 
             android:textSize="15sp"
            android:lines="2" android:ellipsize="marquee" android:marqueeRepeatLimit="marquee_forever"
             android:layout_marginLeft="10dip" android:layout_marginRight="20dip"
            android:textColor="#413839"  android:cacheColorHint="#00000000">

        </TextView>


</RelativeLayout>

请帮忙,感谢您的投入和时间


解决方案 对于第一个,请参阅下面的我的通讯

对于第二个,我不得不用结束

替换marquee
<TextView android:id="@+id/shortdesc" android:layout_width="fill_parent"
        android:layout_height="wrap_content" android:layout_below="@+id/title"
        android:layout_toRightOf="@+id/imageview" 
         android:textSize="15sp" 
        android:maxLines="2"  android:ellipsize="end" 
         android:layout_marginLeft="10dip" android:layout_marginRight="30dip"
        android:textColor="#413839"  android:cacheColorHint="#00000000"
        android:text="asdfghjmsbvhsfadk vcdfkhreouhjkjfdgdslkfdn bfoiunbf m,cvbkjnfgb kj      nbcdjfkdleoig;dkf nmvnb safdsfrtgdfgdfhg">
    </TextView>

2 个答案:

答案 0 :(得分:2)

如果它不在listview中工作,试图首先将ellipsized textview显示为独立视图listview,有时候会使事情复杂化。并尝试使用属性“singleLine = false”

还有have a look at this question:许多与椭圆大小调整textview相关的信息。

更新:我的textview在我的应用中完美运行

<TextView 
    android:id="@+id/product_desc" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@id/img_disclosure"
        android:layout_marginTop="5dip"
        android:layout_marginRight="5dip"
        android:ellipsize="marquee" 
        android:text="this is the sample text to test the ellipsize effect of text view"
        android:textColor="@color/results_sep_color" 
        android:textSize="15sp"
        android:textStyle="bold"
        android:singleLine="false"
        android:maxLines="2"/>

第二次更新:

<TextView
        android:id="@+id/textView2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:lines="1"
        android:scrollHorizontally="true"
        android:singleLine="true"
        android:text="Don't have an account sdsadfsf asdfsdfdsdd abracadabra"

      />

答案 1 :(得分:0)

无需设置android:scrollHorizontallyandroid:lines等属性, 只需设置android:singleLine="true"android:ellipsize="marquee"即可。

注意:当ListView行已选中时,选框动画开始。

public void setSingleLine(boolean singleLine) {
    // Could be used, but may break backward compatibility.
    // if (mSingleLine == singleLine) return;
    setInputTypeSingleLine(singleLine);
    applySingleLine(singleLine, true, true);
}

private void applySingleLine(boolean singleLine, boolean applyTransformation,
        boolean changeMaxLines) {
    mSingleLine = singleLine;
    if (singleLine) {
        setLines(1);
        setHorizontallyScrolling(true);
        if (applyTransformation) {
            setTransformationMethod(SingleLineTransformationMethod.getInstance());
        }   
    } else {
        if (changeMaxLines) {
            setMaxLines(Integer.MAX_VALUE);
        }   
        setHorizontallyScrolling(false);
        if (applyTransformation) {
            setTransformationMethod(null);
        }   
    }   
}

android.widget.TextView代码段(自1.5_r4起)。